我有如下聚合物属性。
gamma:{type:Array,observe:true,notify:true,value:[{“id”:1,“value”:[“w”]}, { “ID”:2 “值”:[ “瓦特”]}]}
我正在使用此属性在div中显示模板中的行和列。
<template is="dom-repeat" items="{{gamma}}" id="maindiv">
<div class="layout__row">
<template is="dom-repeat" items="{{item.value}}">
<div class="layout__block" id$="{{item}}">
<button class="btn btn--primary margins">Add {{item}} Button</button>
</div>
</template>
</div>
</template>
如果我修改gamma属性以在第一个对象中添加一个值,并调用notifysplices,则不会根据数字呈现div。我从add columns方法调用render函数。
我有另一个名为addrows的方法,它有这个代码。
addRows: function(){
this.push("gamma", {"id":this.rows.length+1,"value": ["w"]} );
this.$.maindiv.render();
this.$.rowdiv.render();
}
我在这里失踪了。
我发现解决方案,子属性或嵌套数组更改应如下所示。
this.push([“gamma”,i,“value”],“a”);
感谢来自polymer.slack.com的Arthur Evans答案 0 :(得分:0)
gamma
属性的定义可能导致问题。根据聚合物文档
如果默认值应该是实例唯一的数组或对象,请在函数内创建数组或对象。有关详细信息,请参阅Configuring default property values。
所以你的定义应该是:
gamma: {
type: Array,
observe: true,
notify: true,
value: function () {
return [{"id": 1, "value": ["w"]}, {"id": 2, "value": ["w"]}]
}
}