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にはオブジェクトがあるので、おそらく1つのアプローチは 'id'と' text'プロパティを持つオブジェクトの配列を持つことです何でも)、remove関数では、正しい 'id'を持つオブジェクトの配列を検索します。 – nnnnnn