这有效:
$scope.$watch('cities', function(){
alert("fire");
}, true);
这项工作:
$scope.$watchCollection('[cities]', function(){
alert("fire")
}, true);
任何想法可能出错?
$ scope.cities连接到一些复选框。
答案 0 :(得分:2)
$watchCollection
的文档说明浅会监视传递给它的object
,并在对象发生变化时触发。因此,对于数组,当任何元素发生更改时会触发,但当元素内部的某些深属性发生更改时,不。此外,它没有采用第三个参数(如$watch
对objectEquality
所做的那样)。在您的情况下,对象cities
可能永远不会更改引用。
但是,如果你有:
$scope.cityList = [cities];
$scope.$watchCollection('cityList', function () { alert('fire'); });
// As a response to some event:
$scope.cityList[0] = newCities;
然后观察者应该开火。
答案 1 :(得分:0)