可能这是最简单的事情,但是我无法用角度解析字符串到Int。
我想做什么:
<input type="text" ng-model="num1">
<input type="text" ng-model="num2">
Total: {{num1 + num2}}
如何将这些num1和num2值相加?
日Thnx!
答案 0 :(得分:44)
你不能(至少目前)在角度表达式中使用parseInt
,因为它们不是直接评估的。引用the doc:
Angular不使用JavaScript的
eval()
来计算表达式。 相反,Angular的$parse
服务处理这些表达式。Angular表达式无法访问全局变量
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 值,只有 将它们转换为Numbers(|number
过滤器会阻止显示null
如果此演员表导致NaN
)。因此,请选择适合您特定情况的方法。
答案 1 :(得分:28)
选项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)}}
答案 2 :(得分:3)
<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)
答案 3 :(得分:1)
在范围内执行操作。
<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}}
答案 4 :(得分:1)
public int find(int k) {
System.out.println(k + " : " + this.k);
if (k == this.k) {
return 1;
}
if (k < this.k){
if (left != null) {
left.find(k);
}
} else {
if (right != null) {
right.find(k);
}
}
return 0;
}
答案 5 :(得分:0)
这是绑定添加太多数字的方式
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.total = function() {
return parseInt($scope.num1) + parseInt($scope.num2)
}
})
</script>
<body ng-app='myApp' ng-controller='myCtrl'>
<input type="number" ng-model="num1">
<input type="number" ng-model="num2">
Total:{{num1+num2}}
Total: {{total() }}
</body>
</html>
&#13;
答案 6 :(得分:0)
内部模板可以很好地工作。
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>
<div ng-app="">
<input ng-model="name" value="0">
<p>My first expression: {{ (name-0) + 5 }}</p>
</div>
</body>
</html>