我有一個數組中的項目列表。Aurelia刪除項目後不顯示正確的陣列表示
當我點擊我認爲這個項目,我試圖刪除這個項目
查看
<div class="lootItem" repeat.for="lootItem of stack">
<div class="noselect" click.delegate="$parent.takeItem(lootItem)">
<i class="fa fa-diamond"></i> ${lootItem.value}
</div>
</div>
視圖模型
takeItem(lootItem){
this.eventAggregator.publish(new ItemTaken(lootItem));
console.log(_.includes(this.stack, lootItem)); //true
_.pull(this.stack, lootItem); //removes item and fails to update the ui
_.remove(this.stack, lootItem); //removes item and fails to update the ui
this.stack.shift(); //removes first item and updates the ui
}
兩個.pull()
和.remove()
(使用lodash)將刪除數組中的項但不更新ui。
.shift()
設法從數組中刪除項目,並更新所述用戶界面。
爲什麼Aurelia在使用lodash時不會更新UI?
附錄:可能值得注意的是,如果我點擊相同的物品兩次,那麼_.includes
第一次爲真,然後第二次爲假。
?使用本機功能,您的代碼將起作用。 –
我熟悉很多lodash方法,這就是爲什麼我決定將它引入,這是否意味着操縱標準ES方法之外的數組將不起作用?現在看來我可以使用過濾器和操作數組,像這樣:'this.stack = this.stack.filter(item => item!= lootItem);'。但是我覺得它不像一個簡單的'.remove()'那麼清晰。 – 4imble
我不熟悉lodash的內部,但我發佈了一個答案,顯示了使用內置數組方法是多麼簡單。乾杯! –