我们有一个大的模型对象,是拥有和管理的外部聚合物。我们希望通过代理元素将该模型暴露给聚合物元素,该代理元素可以暴露该模型的计算部分。
例如,模型可能有:
{
blocks: {
...
properties: [
{ ... }, // prop0
{ ... }, // prop1
]
},
}
我们正在使用递归对象观察者和数组观察者来监控模型的变化并适当地通知聚合物(使用.notifyPath(path, ...)
进行对象变化和._notifySplice(...)
进行数组变化)。然而,对于我们来说,似乎没有一种很好的方法来通知数组中对象的变化,例如上面的例子中prop0
的变化。
?路径应该是什么?
下面是一个使用绑定来显示嵌套在对象和数组中的更新的Polymer属性的示例:
代码:<div>
<h1>[[blocks.properties[0]]]</h1>
<p>this updated property should read: Apple</p>
</div>
脚本:
Polymer({
is: "my-page",
properties: {
blocks: {
type: Object,
value: { properties : ["acorn","banana","carrot"] },
notify: true
},
},
attached: function() {
console.log("update");
this.set('blocks.properties[0]', "Apple");
},
如果你需要做数组函数,你也应该使用this.push(path, value)
或this.splice(path, value)
来通知更改