当我们将它写入HTML角度时,为什么Math.floor什么都不返回?

sna*_*ggs 6 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>
Run Code Online (Sandbox Code Playgroud)

调节器

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

输出:

floor 1: 
floor 2: 1233.8435
floor 3: 1,234
floor 1 from controller: 1233
Run Code Online (Sandbox Code Playgroud)

一般来说,我正在寻找合适的方法1233.

我不想在控制器中调用新方法.

为什么Math.floor没有回报?

谢谢,

演示小提琴

Ser*_*hiv 18

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

您当前的范围是由myCntrlso 定义的范围,ng-bind="value"评估为$scope.value.

AngularJS无法区分全局Math命名空间$scope.Math,因此它将其视为任何其他作用域表达式.

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

正确的方法是使用过滤器:

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

    return function(n){
        return Math.floor(n);
    };
});
Run Code Online (Sandbox Code Playgroud)


Cha*_*ani 11

表达式在$ scope上进行评估.如果你在控制器中执行此操作

$scope.Math=Math;

它会奏效.