我正在尝试做类似于this plunker的事情。请注意,我使用ng-click事件将数字的值设置回相同的数字。但是,这种变化似乎并没有发生。
$scope.$watch('value', function(newValue, oldValue){
console.log("Value changed from "+oldValue+" to "+newValue);
});
$scope.call = function(){
console.log("Call is called");
$scope.value=1;
}
所以我将其更改为以下内容......
$scope.call = function(){
console.log("Call is called");
$scope.value=0;
$scope.value=1;
}
然而,this will seem to solve the issue(虽然非常混乱)仍然没有火警。
$scope.name = 'World';
$scope.value = {};
$scope.value.value=1;
$scope.$watch('value', function(newValue, oldValue){
console.log("Value changed from "+oldValue.value+" to "+newValue.value);
});
$scope.call = function(){
console.log("Call is called");
$scope.value = {};
$scope.value.value=1;
}
所以问题是,这里发生了什么,为什么我不能看到设置为相同值的数字?是否有更清洁的方法来处理这个问题?
答案 0 :(得分:1)
此行为为documented(向下滚动至$ watch部分)
仅当来自当前的值时才调用侦听器 watchExpression和之前调用watchExpression不相等 (初始运行除外)。
不平等是 根据参考不等式确定,严格比较通过 !== Javascript运算符,除非objectEquality == true ...