这是我的 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/