使用下面的代码,即使application/x-www-form-urlencoded
发生更改,age2
也不会更新。
age
有人能告诉我它有什么问题吗?如果我将<div ng-app="myApp" ng-controller="myController">
<input type="text" ng-model="age" placeholder="Name"></input>
<input type="text" ng-model="firstName" placeholder="First name"></input>
<h1>Hi there, {{ firstName }}, you are {{ age }} year old, age2 is {{ age2 }}!</h1>
var app = angular.module('myApp', []);
app.controller('myController', function($scope){
$scope.age = 20;
$scope.age2 = parseInt($scope.age) + 1;
});
更改为函数:
age2
但它运作良好。我知道Angular会检查值是否已更改,如果它在两个连续的“检查”中保持不变,则会更新视图。如果它花了太长时间,那么这些值可能会永远改变,并且会引发错误(从我所理解的)。
答案 0 :(得分:1)
有几种方法可以处理它。
使用观察者:
$scope.$watch('age', function(newVal, oldVal) {
$scope.age2 = parseInt(newVal) + 1;
})
使用控制器中的功能:
$scope.parseAge = function(age) {
return parseInt(age) + 1
}
{{ parseAge(age) }}
或使用过滤器:
app.filter('parseAge', function() {
return function(input) {
return parseInt(input) + 1;
}
});
{{ age | parseAge }}
答案 1 :(得分:0)
直接回答这个问题:
在第一种情况下,您只在控制器首次初始化时指定age2
的值。没有继承或手表会改变这个价值。
当它是视图中调用的函数时,它将被重新评估每个摘要。
如果您正在使用像您所拥有的简单操作,您还可以在视图中添加许多其他方法以使其工作
{{ +age +1 }}