前提・実現したいこと
(例)Vue.jsでTodo管理を作っています。
v-on:clickを利用して多次元配列のオブジェクトを一つ削除したいのですが、上手くいきません。
削除機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
//googleディベロッパーツール(console)での表示 [Vue warn]: Error in v-on handler: "TypeError: Cannot read property 'splice' of undefined"
該当のソースコード
Vue.js
1<template> 2 <div id="app"> 3 <h1>Task List</h1> 4 5 <div class="box"> 6 <input class="input" type="text" placeholder="Title" v-model="newTaskTtitle"> 7 <input class="input" type="text" placeholder="Content Shift+Enterで登録" v-model="newTaskComment" v-on:keyup.shift.enter="addTodo"> 8 </div> 9 10 <draggable :options="{ group: 'tasks' }" element="ul" v-for="(list,index) in tasks" v-bind:class="['task__' + index]"> 11 <li class="card" v-for="item in list" :key="item.status"> 12 <div class="card-content text">{{ item.name }}</div> 13 <div v-if="!isComment" v-on:dblclick="isComment = true"> 14 <div class="card-footer-item">{{ item.comment }}</div> 15 </div> 16 <div v-else> 17 <input type="text" class="input is-rounded" v-model="item.comment" v-on:blur="isComment=false"> 18 </div> 19 20 //↓押したタスク(オブジェクト)だけ消したい 21 <span class="delele" v-on:click="doDelete(item) in list">削除</span> 22 23 </li> 24 </draggable> 25 </div> 26</template> 27 28<script> 29import draggable from 'vuedraggable'; 30 31export default { 32 name: 'App', 33 components: { 34 draggable, 35 }, 36 data() { 37 return { 38 tasks: [ 39 [{ name: '未完了', status: 1, comment: "その1" },{ name: '未完了', status: 1, comment: "その2" } ], 40 [{ name: '仕掛', status: 2, comment: "その1" },{ name: '仕掛', status: 2, comment: "その2" } ], 41 [{ name: '完了', status: 3, comment: "その1" },{ name: '完了', status: 3, comment: "その2" } ], 42 ], 43 isComment: false, 44 newTaskTtitle: '', 45 newTaskComment: '' 46 } 47 }, 48 methods: { 49 //タスクの追加 50 addTodo: function(){ 51 this.tasks[0].push({name: this.newTaskTtitle, comment: this.newTaskComment}); 52 this.newTaskTtitle = "", 53 this.newTaskComment = "" 54 }, 55 //タスクの削除(spliceを使ってみても上手くいかない) 56 doDelete: function(item){ 57 this.item.splice(this.item.indexOf(item),1); 58 } 59 } 60} 61</script>
試したこと
console.log(item)で見ると{__ob__: Observer}と出ていてオブジェクトは取れているのかと思います
補足情報(FW/ツールのバージョンなど)
Vue cli
draggable(ライブラリ)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/02 11:14