javascript - AngularJS : watch array property

标签 javascript arrays angularjs inheritance properties

问题在这里清晰可见 http://plnkr.co/edit/ZphAKvZeoVtuGFSEmOKg?p=preview

假设您有一个如下所示的数组

var arr = [
 {
   'a': "123",
   'b': "654"
 },
 {
   'a': "456",
   'b': "321"
 }
];

arr.foo = 'bar';

$watch 当您更改对象内部的某些内容时触发(例如arr[0].a = 'hoopidoo' ),但当您更改 foo 时,它不会(例如 arr.foo = 'deedlilaa',或通过 ng-模型。)

这可能是 javascript 的限制吗?我的意思是,当您迭代该数组时,您只会返回对象,因此无法枚举该 foo..

检查一下那个笨蛋,看看我到底在做什么。无论您在输入中键入什么内容或在 Controller 中执行什么操作, watch 都不会触发。

最佳答案

观察数组对象属性(与特定键上的对象相反)的唯一方法是显式$watch它们:

$scope.$watch('arr.param', function(newVal, oldVal) {
   // Some code
}
arr.param = 'foobar'

但是,如果您不关心混合数字和关联数组键,您可以将 plunker 的第 37 行更改为如下所示:

$scope.arr['param'] = "abc";

关于javascript - AngularJS : watch array property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20621906/

相关文章:

PHP 数组唯一值

c - 如何在C中计算字符串的字符并将它们分配给不同的组(小写和大写)

javascript - 检测 chrome 是否正在加载缓存页面?

javascript - Angular ui-router 中使用 href 的路由问题

javascript - 使用自定义过滤器时 $digest() 被调用十次

javascript - 如何在javascript中舍入 float ?

javascript - 如何在jquery中查找带有数字选择器的字符串

javascript - AWS S3 无法访问的主机

ios - 如何根据 Swift 中的数组内容对字典数组进行排序

javascript - 按任何键盘按钮都会删除哈希 URL