首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么使用表达式的变量上的parseInt不显示$scope变量?

为什么使用表达式的变量上的parseInt不显示$scope变量?
EN

Stack Overflow用户
提问于 2017-01-07 03:01:10
回答 2查看 250关注 0票数 0

这是我的密码

工作代码

代码语言:javascript
运行
复制
var app = angular.module("app", []);
app.controller("ListCtrl", ["$scope",
  function($scope) {
         $scope.value = '20';
  }
]);
代码语言:javascript
运行
复制
<!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>

不工作代码:

代码语言:javascript
运行
复制
var app = angular.module("app", []);
app.controller("ListCtrl", ["$scope",
  function($scope) {
         $scope.value = '20';
  }
]);
代码语言:javascript
运行
复制
<!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> {{parseInt(value)}}</h1>
  </div>
</body>
</html>

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-07 03:27:12

您必须解析控制器中的值,因为parseInt无法将其转换为角表达式:

另一方面,如果您真的想在DOM中这样做,最好的选择之一是使用角度过滤器,如下所示:

代码语言:javascript
运行
复制
var app = angular.module("app", []);

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

app.controller("ListCtrl", ["$scope",
  function($scope) {
         $scope.value = '20';
  }
]);
代码语言:javascript
运行
复制
<!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>

票数 1
EN

Stack Overflow用户

发布于 2017-01-07 03:20:43

如医生所说

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

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

关于它为什么不显示的问题,请检查

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

如果插值的值不是字符串,则计算如下:

未定义的和null被转换为“”

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

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

代码语言:javascript
运行
复制
var app = angular.module("app", []);
app.controller("ListCtrl", ["$scope",function($scope) {
  
         $scope.value = '20';
  
         $scope.parseInt = function(value)
         {
           return parseInt(value);
         }
         
      
         
  }
]);
代码语言:javascript
运行
复制
<!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> {{parseInt(value)}}</h1>
  </div>
</body>
</html>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41517371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档