[解決済み] Vue.jsで配列から項目を削除する方法
2022-10-23 14:29:24
質問
私はvue.js(2)の初心者で、現在簡単なイベントアプリを制作しています。私はイベントを追加することに成功しましたが、今私はボタンをクリックすることに基づいてイベントを削除したいと思っています。
HTML
<div class="list-group">
<div class="list-group-item" v-for="event in events">
<h4 class="list-group-item-heading">
{{ event.name }}
</h4>
<h5>
{{ event.date }}
</h5>
<p class="list-group-item-text" v-if="event.description">{{ event.description }}</p>
<button class="btn btn-xs btn-danger" @click="deleteEvent(event)">Delete</button>
</div>
</div>
</div>
JS(Vue)の場合
new Vue ({
el: '#app',
data: {
events: [
{
id: 1,
name: 'Event 1',
description: 'Just some lorem ipsum',
date: '2015-09-10'
},
{
id: 2,
name: 'Event 2',
description: 'Just another lorem ipsum',
date: '2015-10-02'
}
],
event: { name: '', description: '', date: '' }
},
ready: function() {
},
methods: {
deleteEvent: function(event) {
this.events.splice(this.event);
},
// Adds an event to the existing events array
addEvent: function() {
if(this.event.name) {
this.events.push(this.event);
this.event = { name: '', description: '', date: '' };
}
}
} // end of methods
});
私はイベントを関数に渡して、スライス関数でその1つを削除しようとしましたが、私はそれが配列からいくつかのデータを削除するためのコードだと思いました。シンプルなボタンとonclickイベントで配列からデータを削除するための最良の、そして最もクリーンな方法は何ですか?
どのように解決するのですか?
あなたが使用している
splice
を間違った方法で使っています。
オーバーロードは
array.splice(開始)
array.splice(start、deleteCount)
array.splice(start、deleteCount、itemForInsertAfterDeletion1、itemForInsertAfterDeletion2、・・・)
Startは、削除したい要素ではなく、開始したいインデックスを意味します。そして、2番目のパラメータとして
deleteCount
を1として渡す必要があります。これは、次のような意味になります。
で行った方がいいんですね。
deleteEvent: function(event) {
this.events.splice(this.events.indexOf(event), 1);
}
また、パラメータを使用しているので、パラメータに直接アクセスします。
this.event
.
しかし、この方法では、不要な
indexOf
を探すことになります。これを解決するために
index
変数を
v-for
で、イベントオブジェクトの代わりにそれを渡します。
ということです。
v-for="(event, index) in events"
...
<button ... @click="deleteEvent(index)"
そして
deleteEvent: function(index) {
this.events.splice(index, 1);
}
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?