javascript - 为什么当我们将 Math.floor 写入 HTML angular 时,Math.floor 什么都不返回?

标签 javascript angularjs

这是我的 HTML:

<div ng-controller = "myCntrl">  
    <pre>floor 1: {{Math.floor( value )  }}</pre>  
    <pre>floor 2: {{value }}</pre>  
    <pre>floor 3: {{value | number : 0 }}</pre>  
    <pre>floor 1 from controller: {{newValue }}</pre>  
</div>

Controller

app.controller('myCntrl', function ($scope) {
    $scope.value = 1233.8435;
    $scope.newValue = Math.floor(1233.8435);    
});

输出:

floor 1: 
floor 2: 1233.8435
floor 3: 1,234
floor 1 from controller: 1233

通常我正在寻找获取 1233 的正确方法。

我不想在 Controller 中调用新方法。

为什么 Math.floor 什么都不返回?

谢谢,

演示 Fiddle

最佳答案

在这种情况下,AngularJS <span>{{value}}</span> ( expression ) 是 <span ng-bind="value"></span> 的简写和 ng-bind作用于当前scope .

您当前的范围是由 myCntrl 定义的范围所以ng-bind="value"被评估为 $scope.value .

AngularJS 无法区分全局 Math命名空间和 $scope.Math , 所以它像对待任何其他作用域表达式一样对待它。

我建议不要使用 $scope.Math=Math; .

正确的方法是使用 filter :

angular.module('myApp',[]).filter('floor', function(){

    return function(n){
        return Math.floor(n);
    };
});

关于javascript - 为什么当我们将 Math.floor 写入 HTML angular 时,Math.floor 什么都不返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196954/

相关文章:

javascript - 如何以编程方式更新与 Google Analytics 中的客户端 ID 关联的自定义字段?

javascript - 使用 CryptoJS 进行 AES 加密

javascript - Angularjs 显示隐藏 css 问题

javascript - 是否可以将 'required' 传递给 AngularJS 指令?

javascript - 动态创建鼠标光标?

javascript - 如何使用 Jquery 或 Javascript 在三个单独的 Div 中显示 JSON 数据(父子-孙子)

javascript - 无法让 javascript 中的 setTimeout 正常工作

html - 删除 ng-bind-html-unsafe 后,如何注入(inject) HTML?

javascript - Angular 不会将字符串变量传递给 bool 表达式

angularjs - 模拟服务注入(inject) Angular 模块运行 block