我需要跟踪数组模型值何时被指令更新,但 $watch 似乎失败了。我创建了一个 fiddle 来说明问题:
我设置了一个 watch ,以便我可以在模型更改时执行操作。
$scope.$watch('model.title', function(newValue, oldValue) {
if ($scope.model) {
console.debug("watchedTitle=" + newValue);
$scope.watchedTitle = newValue ;
}});
如果模型 newValue 是整数,则 $watch 会一致触发,如调试日志中所示:
watchedTitle=1
watchedTitle=2
watchedTitle=3
watchedTitle=4
watchedTitle=5
我设置了第二个监视来监视数组的更改:
$scope.$watch('model.titlearray', function(newValue, oldValue) {
如果 newValue 是数组 $watch 仅在第一次使用时触发:
watchedTitlearray: 1
此后我的第二 block watch 就不响了。
知道我做错了什么吗?
最佳答案
为了观察列表中元素的变化,请将$watch
的第三个参数设置为true
$scope.$watch('model.titlearray', function(newValue, oldValue) {
// ...
}, true);
关于AngularJS $watch 在第一次更新后数组失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038092/