我有一个数组中的项目列表。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的内部,但我发布了一个答案,显示了使用内置数组方法是多么简单。干杯! –