也许,这是最简单的事情,但我无法解析字符串的角度来诠释..如何parseInt函数在Angular.js
我所试图做的事:
<input type="text" ng-model="num1">
<input type="text" ng-model="num2">
Total: {{num1 + num2}}
如何我可以总结这些num1和num2值吗?
Thnx!
也许,这是最简单的事情,但我无法解析字符串的角度来诠释..如何parseInt函数在Angular.js
我所试图做的事:
<input type="text" ng-model="num1">
<input type="text" ng-model="num2">
Total: {{num1 + num2}}
如何我可以总结这些num1和num2值吗?
Thnx!
您不能(至少在此刻)在角表达式中使用parseInt
,因为它们不是直接评估的。引用the doc:
Angular不使用JavaScript的
eval()
来评估表达式。 相反,Angular的$parse
服务处理这些表达式。角度表达式不能访问全局变量,如
window
,document
或location
。这个限制是有意的。它可以防止意外进入全球的状态 - 一个常见的来源 微妙的错误。
所以,你可以在你的控制器定义total()
方法,然后在表达式中使用它:
// ... somewhere in controller
$scope.total = function() {
return parseInt($scope.num1) + parseInt($scope.num2)
}
// ... in HTML
Total: {{ total() }}
不过,这似乎是相当庞大的一个这样简单的操作添加数字。另一种方法是转换的结果与-0
OP:
Total: {{num1-0 + (num2-0)|number}}
...但是,这会显然不会parseInt函数值,只有投他们的数字(|number
过滤器阻止显示null
如果这个转换结果在NaN
)。因此,请选择适合您特定情况的方法。
在范围内执行操作。
<script>
angular.controller('MyCtrl', function($scope, $window) {
$scope.num1= 0;
$scope.num2= 1;
$scope.total = $scope.num1 + $scope.num2;
});
</script>
<input type="text" ng-model="num1">
<input type="text" ng-model="num2">
Total: {{total}}
选项(经由控制器)1:
angular.controller('numCtrl', function($scope, $window) {
$scope.num = parseInt(num , 10);
}
选项2(通过自定义过滤器):
app.filter('num', function() {
return function(input) {
return parseInt(input, 10);
}
});
{{(num1 | num) + (num2 | num)}}
选项3(通过表达):
首先在您的控制器中声明:
$scope.parseInt = parseInt;
然后:
{{parseInt(num1)+parseInt(num2)}}
选项4(从raina77ow)
{{(num1-0) + (num2-0)}}
不知何故,我不小心降低了这个投票,现在它被锁定,除非答案更新...我要添加空白在答案的结尾,以便我可以增加一个投票 – trickpatty 2016-04-05 15:44:09
选项3和4是伟大的,它的工作良好 – 2016-07-07 05:17:53
爱选项4 .... – Fergus 2016-11-12 01:26:05
var app = angular.module('myApp', [])
app.controller('MainCtrl', ['$scope', function($scope){
$scope.num1 = 1;
$scope.num2 = 1;
$scope.total = parseInt($scope.num1 + $scope.num2);
}]);
<input type="number" string-to-number ng-model="num1">
<input type="number" string-to-number ng-model="num2">
Total: {{num1 + num2}}
和JS:
parseInt($scope.num1) + parseInt($scope.num2)
这可能工作,但要清楚,字符串-to-number是建议的指令,而不是Angular的一部分。请参阅:https://docs.angularjs.org/error/ngModel/numfmt。它允许您将字符串值分配给数字输入字段。它不会改变实际的类型 – jessewolfe 2017-03-23 04:23:47
'{{(num1-0)+(num2-0)}}',没有?但我宁愿在这里使用一个辅助函数。 – raina77ow 2014-10-10 07:15:31
确实有效!日Thnx! – Mar 2014-10-10 07:18:48
对于任何人来这里想知道如何做这个JS方面,$ window.parseInt()是最好的 – 2016-10-19 10:51:45