在聚合物文档" dom-repeat"它说:
项目子属性更改通知将转发到模板实例,通过正常的结构化数据通知系统进行更新。
我认为这意味着如果我更改数组的一个元素,它将更新任何绑定元素。我没有发现这种情况。考虑到这一点,似乎更新子属性的唯一选择是使用数组方法或自定义函数重建数组,这对于更大的数据来说将越来越困难。或以某种方式将观察者添加到所有子属性,这些子属性感觉不高效。有什么建议吗?
不起作用的示例:http://jsbin.com/wadeju/1/edit?html,output
(function(){
Polymer({
is: 'x-element',
properties:{
d:{
type: String,
value:"Click Me"
},
days:{
type: Array,
value: ["one", "two", "three"]
}
},
c:function(){
this.days[0] = "1";
this.days[1] = "2";
this.days[2] = "3";
this.d="hello";
},
});
有效的示例:http://jsbin.com/luqudo/edit?html,output
Polymer({
is: 'x-element',
properties:{
d:{
type: String,
value:"Click Me"
},
days:{
type: Array,
value: ["one", "two", "three"]
}
},
c:function(){
this.days = ["1", "2", "3"]
this.d="hello";
},
});
})();
答案 0 :(得分:0)
绑定数组值的推荐方法:
https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#array-binding
请注意,dom-repeat
示例还使用数组中的命名对象进行绑定。
您应该使用Polymer的(数组)变异方法来维持同步:
https://www.polymer-project.org/1.0/docs/devguide/properties.html#array-mutation
使用Polymer的属性变异设置数据的示例:
http://jsbin.com/zuhecovequ/1/edit?html,output
(function(){
Polymer({
is: 'x-element',
properties:{
d:{
type: String,
value:"Click Me"
},
days:{
type: Array,
value: ["one", "two", "three"]
}
},
c:function(){
this.set("days.0","1");
this.set("days.1","2");
this.set("days.2","3");
this.d="hello";
},
});
})();