为什么使用表达式对变量进行parseInt不显示$ scope变量?

时间:2017-01-07 03:01:11

标签: javascript html angularjs scope

这是我的代码,

工作代码

mydigest
var app = angular.module("app", []);
app.controller("ListCtrl", ["$scope",
  function($scope) {
         $scope.value = '20';
  }
]);

不工作代码:

<!DOCTYPE html>
<html>
<head>
   <script data-require="angular.js@1.4.7" data-semver="1.4.7" src="https://code.angularjs.org/1.4.7/angular.js"></script>
   <script src="script.js"></script>
</head>
<body ng-app='app'>
  <div ng-controller="ListCtrl">
   <h1> {{value}}</h1>
  </div>
</body>
</html>
var app = angular.module("app", []);
app.controller("ListCtrl", ["$scope",
  function($scope) {
         $scope.value = '20';
  }
]);

通常在表达式上使用parseInt应该有效,这里有什么问题?

2 个答案:

答案 0 :(得分:1)

你必须解析控制器中的值,因为angular不能parseInt进入Angular表达式:

另一方面,如果你真的想在DOM中做到这一点,最好的选择之一是使用角度滤波器,如:

&#13;
&#13;
var app = angular.module("app", []);

app.filter('parseInt', function() {
    return function(value) {
      return parseInt(value);
    };
});

app.controller("ListCtrl", ["$scope",
  function($scope) {
         $scope.value = '20';
  }
]);
&#13;
<!DOCTYPE html>
<html>
<head>
   <script data-require="angular.js@1.4.7" data-semver="1.4.7" src="https://code.angularjs.org/1.4.7/angular.js"></script>
   <script src="script.js"></script>
</head>
<body ng-app='app'>
  <div ng-controller="ListCtrl">
   <h1>{{(value | parseInt) + 44}}</h1>
  </div>
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

根据文件

https://docs.angularjs.org/guide/expression

Angular不使用JavaScript的eval()来计算表达式。相反,Angular的$ parse服务处理这些表达式。

关于无法显示原因的问题,请查看

https://docs.angularjs.org/guide/interpolation

如果插值不是String,则按如下方式计算:

undefined 和null会转换为&#39;&#39;

由于ParseInt在内插中不可用,因此未定义,显示值也是如此。

您必须在控制器$ scope中创建自己的函数。

&#13;
&#13;
CamelContext context = new DefaultCamelContext();
&#13;
var app = angular.module("app", []);
app.controller("ListCtrl", ["$scope",function($scope) {
  
         $scope.value = '20';
  
         $scope.parseInt = function(value)
         {
           return parseInt(value);
         }
         
      
         
  }
]);
&#13;
&#13;
&#13;