Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Math.floor在我们将其写入HTML时不返回任何内容?_Javascript_Angularjs - Fatal编程技术网

Javascript 为什么Math.floor在我们将其写入HTML时不返回任何内容?

Javascript 为什么Math.floor在我们将其写入HTML时不返回任何内容?,javascript,angularjs,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 fr

这是我的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>
输出:

一般来说,我正在寻找获得
1233
的正确方法

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

为什么
Math.floor
什么也不返回

谢谢


演示

表达式在$scope上求值。如果在控制器中执行此操作

$scope.Math=Math


它可以工作。

Angular expression不支持所有javascript方法,例如Math.floor(),您可以在$scope上取消一个floor函数的清除,然后删除Meth floor

将它放在控制器中


在这种情况下,AngularJS
{{value}}
()是
的简写,并且
ng bind
作用于当前的
范围

您当前的作用域是由
myCntrl
定义的,因此
ng bind=“value”
评估为
$scope.value

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

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

正确的方法是使用:


什么是
$scope.Math.floor
?Math.floor指的是JavaScript,这实际上应该包含在Angular文档中:“表达式不是JavaScript
eval
。请查看以下示例…”实际上,它是:“将Angular视图表达式视为JavaScript表达式可能很诱人,但这并不完全正确,因为Angular不使用JavaScript eval()来计算表达式。”()+1。也许你可以跳过包装器函数并返回
Math.floor;
+1,因为它是一种有角度的方式。这是一个比公认的答案好得多的答案。
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
<div ng-controller = "myCntrl">  
  <pre>floor 1: {{Mathvalue}}</pre>  
  <pre>floor 2: {{value }}</pre>  
  <pre>floor 3: {{value | number : 0 }}</pre>  
</div>
var app = angular.module('myModule', []);

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

app.$inject = ['$scope'];
angular.module('myApp',[]).filter('floor', function(){

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