考慮以下代碼:更新陣列不會反映到DOM
<template is="dom-repeat" items="{{chats}}" as="item">
<p>{{item.name}}</p>
<span>{{item.unreadcount}}</span>
</template>
我似乎無法確保更換陣列(完全,不只是更新一個的屬性的元素)更新dom。
Updating(升級)我想是這樣的:
var c = this.chats;
c.forEach(function(e) {
e.unreadcount = Math.floor(Math.random() * 10) + 1;
}.bind(this));
// none of the following approaches has any effect:
this.chats = c;
this.set("chats", c);
this.notifyPath("chats", c);
我如何能實現,如果數組被徹底改變重新渲染DOM?
編輯
感謝瑪麗亞暗示我想通了,如何做到這一點。
僅使用splice()
是不夠的,您還需要使用Polymer的函數來修改陣列本身:this.set(..., ...)
。
for (i = 0; i < this.chats.length; i++) {
this.set('chats.'+i+'.unreadcount', Math.floor(Math.random() * 10) + 1);
}
this.chats = this.chats.slice();
我的額頭開始,因爲與聚合物開始,由於我的頭撞在牆上的大規模撞壓平
如果你用'this.set'完成所有的操作,你就不需要'this.chats = this.chats.slice();'。試圖刪除它,並檢查它是否仍然有效? – Maria