如何将观察者附加到作为数组的聚合物属性?要清楚,我希望在数组中的项更改时进行回调。为简单起见,我们说我的数组是:
[
{ text: 'foo' },
{ text: 'bar' }
]
我想要类似的东西:
observe : {
'items.text' : 'itemsChanged'
}
以下作品,但显然不可持续:
observe : {
'items[0].text' : 'itemsChanged',
'items[1].text' : 'itemsChanged'
}
请注意,在我的情况下,更改来自我控制的另一个聚合物元素。因此,如果我能够以某种方式触发对具有{ text: 'foo' }
控制权的元素的更改,那么这也会有效。
答案 0 :(得分:3)
要清楚,Polymer会自动观察Arrays,但是一个' ArrayObserver'只会告诉您(a)数组本身是否被替换或(b)项目是否被添加,删除或重新排列。就像观察对象一样,Polymer不会自动观察子对象的属性。
这些变化来自我控制的另一种聚合物元素
通常就是这种情况,我们通常会让改变火的元素成为沟通的事件。
答案 1 :(得分:0)
有点晚了,但因为谷歌上的问题排名相当高,而且以上都没有真正帮助,这是我的解决方案:
聚合物附带observe.js,这有助于解决您的问题。
基本版本将使用ArrayObserver
,但这只会在数组被更改时触发,这意味着添加,删除元素时,我也会在更换条目时猜测。但是,如果您想观察数组中对象属性的更改(例如在您的情况下),这将无济于事。
最好使用CompoundObserver
并通过addPath
或addObserver(new PathObserver(obj, '...'))
添加所有路径。但是你必须迭代整个数组并在循环中添加所有观察到的属性。
答案 2 :(得分:0)
有这方面的文档