【发布时间】:2013-12-16 22:06:05
【问题描述】:
问题在这里很明显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-model。)
可能是 javascripts 的限制吗?我的意思是,当您遍历该数组时,您只会取回对象,因此无法枚举 foo..
检查 plunker 以了解我的意思。无论您在输入中键入什么内容或在控制器中执行什么操作,Watch 都不会触发。
【问题讨论】:
-
你写的甚至不是有效的javascript,尝试将“数组”粘贴到nodejs repl中,它不会工作,foo:'bar'不能是javascript数组的元素。您只能将 foo 定义为对象的属性,因为数组是对象。
-
我认为可以这样写下来,但如果没有..无论如何它在plunker中仍然是正确的,或者在这里jsfiddle.net/6S738
-
你改变了你的问题,我指的是修订版 1:stackoverflow.com/posts/20621906/revisions,修订版 1 代码无法编译,它不是有效的 javascript。
-
我知道,我正在回答你的评论,我认为可以写下来,因为它是在第 3 版中写下来的,但由于不可能,我更正了它(以匹配那些在 plunker 上)并告诉你。
-
没问题我的朋友,我们是来帮忙的,别担心。
标签: javascript arrays angularjs inheritance properties