我有一个铁列表,我想提供选项来选择多个项目并一次删除它们。这是我iron-list
与multi-selection
:对所选项目数组如何使用聚合物1.2.4的铁清单一次性删除和取消选择多个项目?
<iron-list items="[[users]]" as="user" selected-items="{{selectedUsers}}" multi-selection>
...
</iron-list>
我已经使用forEach循环:
_deleteSelected: function(e) {
this.selectedUsers.forEach(function(user) {
var index = this.users.indexOf(user);
if (index != -1) {
this.splice('users', index, 1);
}
}, this);
this.querySelector('iron-list').clearSelection();
console.log(this.selectedUsers);
}
在每一个循环我计算项目的索引的主要项目阵列中的,然后我用this.splice('items', index, 1)
来删除它。循环结束后,我使用这个this.querySelector('iron-list').clearSelection();
来清除我的选择并继续前进。但是我的迭代失败了,因为循环似乎只运行一次,无论我选择了多少项。如果我只选择一个项目,那么它会被正确删除,并且列表会被刷新。但是这里发生了一些奇怪的事情,因为现在有一个索引与我刚删除的索引相同的项目似乎已被检查。例如,我有三个项目,我选择第二个并删除它。现在第二个是以前的第三个项目,但似乎没有任何理由被检查,而所选项目数组是空的。我猜这些是因为Polymer使用的数组引用而发生的。我怎样才能解决铁列表选择这种行为?有没有办法只使用拼接,而不必清除选定的项目数组?我的完整组件示例是here。
嗯,在这里,如果一个项目被删除,与删除的项目具有相同索引的项目没有理由似乎被检查。 –
是的,这是真的。因为你没有将所选内容绑定到复选框。 你有或没有自己选中它或进行绑定。 – Alon
哦,谢谢你!如果我使用'this.selectedUsers.slice()'循环并将'iron-list'内的项目更改为'<纸张复选框> [[user.name]]'利用'selected'似乎工作正常。下一步是应用排序和过滤的项目。 –