VueでToDoアプリを作成しているのですがチェックボックスがオン時のみ削除できるようにしたいのですが、jsをどのように記述すべきかわかりません。
<div id="app"> <!-- タイトル --> <h2>Vue.js Hands On</h2> <form v-on:submit.prevent> <input type="text" v-model="newItem"> <button v-on:click="addItem"> Add </button> </form> <ul> <!-- v-forによりtodo.item()を繰り返し表示 --> <li v-for="(todo, index) in todos"> <input type="checkbox" v-model="todo.isDone"> <!-- methods内のtodo.item--> <span v-bind:class="{done: todo.isDone}"> {{ todo.item }} </span> <button class="deletebox" v-on:click="deleteItem(index)"> DELETE </button> </li> </ul> <!-- JSON形式で表示確認 <--> <pre>{{ $data }}</pre> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
JS
1const app = new Vue({ 2 el: '#app', 3 data: { 4 newItem: '', 5 todos: [] 6 }, 7 methods: { 8 addItem: function(event) { 9 // inputが空なら、追加できない 10 if (this.newItem == '') return; 11 let todo = { 12 item: this.newItem, 13 isDone: false 14 } 15 this.todos.push(todo) 16 this.newItem = '' 17 }, 18 deleteItem: function(index) { 19 //if (todo.isDone == false) return; 20 if (todo.isDone == 'true') data.todos.splice(index, 1); 21 } 22 } 23})
js
1 deleteItem: function(index) { 2 //if (todo.isDone == false) return; 3 if (todo.isDone == true) data.todos.splice(index, 1); 4 }
todoのisDoneがtrue時のみ、spliceメソッドによりタスクを削除したいです(false時はreturnする)。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。