我有一個鐵列表,我想提供選項來選擇多個項目並一次刪除它們。這是我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'似乎工作正常。下一步是應用排序和過濾的項目。 –