我想使用的dom-repeat
這樣的一個模板來呈現項目的動態列表聚合物模板:添加項目到數組不重新渲染
<template is="dom-repeat" items={{numbers}} as="anumber" >
<div>
{{anumber}}
<paper-button class="deleteThisNumber" index={{index}}></paper-button>
</div>
</template>
<paper-button id="addNumber"></paper-button>
每個項目都有一個按鈕,將刪除此項目。
dom-repeat
模板的外部還有一個按鈕,該模板嘗試向數組numbers
添加條目。該JS是這樣的:
Polymer ({
is: "something",
properties: {
numbers: {
type: Array,
value: ["1"]
}
},
removeByIndex: function (array, index) {
return array.filter(function (elem, _index) {
return index != _index;
});
},
attached: function() {
var myself = this;
$(this).on('click', '.deleteThisNumber', {}, function (e) {
myself.numbers = myself.removeByIndex(myself.numbers, this.index)
});
this.$.addNumber.addEventListener("click", function (e) {
myself.numbers.push("123");
})
},
...
});
結果是:刪除的作品,但增加沒有。
通過說「作品」,我的意思是該列表通過添加/刪除條目DOM
來反映更改。我檢查了它的屬性numbers
它一直在正確修改。那麼爲什麼Polymer沒有將數組屬性的更改反映到模板中,如果更改是添加(array.push)?我應該如何解決這個問題? (我願意接受比手動添加的div其他任何建議)
我聚合物的版本是1.X
這個偉大的工程!你能解釋一下爲什麼我可以調用聚合物dom的push函數嗎? – tic30
這就是爲什麼,https://www.polymer-project.org/1.0/docs/devguide/data-system#observable-changes –
@ tic30增加了更多信息。 – Ofisora