vue.jsで実行しています。
trueのリストを全て削除したいです。
HTML
1 <div id="app"> 2 <ul> 3 <li v-for="list in lists"> 4 <input type="checkbox" name="" v-model="list.flag"> 5 </li> 6 </ul> 7 <form action=""> 8 <input type="button" value="削除" v-on:click="removelist()"> 9 </form> 10 </div> 11
javascript
1 new Vue({ 2 el: '#app', 3 data: { 4 lists: [ 5 { title: '要素1', flag: true }, 6 { title: '要素2', flag: true }, 7 { title: '要素3', flag: false }, 8 { title: '要素4', flag: false }, 9 { title: '要素5', flag: false }, 10 ] 11 }, 12 methods:{ 13 removelist: function(){ 14 var _self = this; 15 var index = 0; 16 this.lists.forEach(function(list){ 17 if(list.flag === true){ 18 _self.lists.splice(index,1); 19 } 20 index++; 21 }); 22 } 23 }, 24 })
上記のコードで削除を続行した時に以下の挙動になります。
[実行前]
要素1 - true
要素2 - true
要素3 - false
要素4 - false
要素5 - false
[実行後]
要素2 - true
要素3 - false
要素4 - false
要素5 - false
Trueを一つ空けると望んだ形になります。
[実行前]
要素1 - true
要素2 - false
要素3 - true
要素4 - false
要素5 - false
[実行後]
要素2 - false
要素4 - false
要素5 - false
なぜ連続してtrueがあるとうまく動作しないのでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。