【发布时间】:2017-08-26 05:58:33
【问题描述】:
我正在尝试使用 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 属性,它一直被正确修改。那么,如果更改是添加(array.push),为什么 Polymer 不会将数组属性的更改反映到模板?我应该如何解决这个问题? (除了手动添加 div 之外,我愿意接受任何建议。)
我的 Polymer 版本是 1.X
【问题讨论】:
标签: javascript polymer