AngularJS $watch 在第一次更新后数组失败

标签 angularjs angularjs-directive angularjs-scope

我需要跟踪数组模型值何时被指令更新,但 $watch 似乎失败了。我创建了一个 fiddle 来说明问题:

http://jsfiddle.net/DsTLN/

我设置了一个 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/

相关文章:

javascript - 在 Angularjs 中检测鼠标按下事件

javascript - Angular 写入嵌套范围属性

javascript - 如何将对象或变量值从html脚本标记传递到 Angular Controller

angularjs - Angular $http.put REST

angularjs - 如何在 AngularJS 指令中访问全局 js 变量

javascript - 重复密码验证不起作用

javascript - 使用 angularjs 指令操作范围值

AngularJS 在指令模板中评估 $rootScope 变量

javascript - 我们可以将 PDF 文件从 AngularJS 客户端发送到 NodeJS 服务器吗

angularjs - 我希望我的 angular-loading-bar 自动处理 XHR 请求