问题在这里清晰可见 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/