我正在创建一个组件,以显示在Vue中几秒钟后自动关闭的通知,我的警报组件发出“过期”事件,然后在父级侦听此事件,并删除它来自具有拼接的父数据数组,它有时会起作用,但有时不会删除“警报”。在超时时从阵列中删除项目
Vue.component('alert', {
template: '<li><slot></slot></li>',
mounted() {
setTimeout(() => this.$emit('expired'), 2000)
}
});
new Vue({
el: '#app',
data: {
count: 0,
alerts: []
},
methods: {
createAlert(){
this.alerts.push(this.count++)
},
removeItem(index) {
this.alerts.splice(index, 1)
}
}
});
见this Fiddle并在Create Alert
按钮点击几次,有些警报将不会被解雇。有关如何解决这个问题的任何想法?
提示:当一个项目从数组中移除时,它后面的项目的索引会发生什么? – nnnnnn
@nnnnnn他们重置并重新从0开始,但是如果在JavaScript中没有关联数组,那么如何删除特定项? – enriqg9
我不知道Vue知道什么是“批准的”Vue方法,但JS确实有对象,所以也许有一种方法是让一个具有“id”和“text”属性的对象数组(或无论),并在删除功能搜索数组的对象与右'ID'。 – nnnnnn