为啥会报这个错
<body>
<div id="app">
<h1>小黑记事本</h1>
<div class="box">
<input type="text" class="ipt" placeholder="请输入任务">
<button >添加任务</button>
</div>
<section class="liebiao">
<ul class="make-list">
<li class="make" v-for="(item, index) in list" :key="item.id">
<div class="view">
<span class="index">{{index + 1}}.</span> <label >{{item.name}}</label>
<button @click="del(item.id)" class="destory">X</button>
</div>
</li>
</ul>
</section>
</div>
<script>
var app =Vue.createApp({
data(){
return {
list:[
{id: 1,name: '看书两小时'},
{id: 2,name: '跑步40分钟'}
],
methods: {
del(id){
this.list =this.list.filter(item => item.id !== id)
// console.log(id)
}
}
}
}
}).mount('#app')
</script>
</body>
点击删除按钮报错:
methods是和data同级的,在data里面它找不到del,除非用methods.del
不知道你这个问题是否已经解决, 如果还没有解决的话:这个错误是因为在Vue中,方法应该定义在methods
选项中,而不是定义在data
选项中。所以,只需要将methods
选项从data
选项中移出来即可解决问题。
以下是修改后的代码:
<body>
<div id="app">
<h1>小黑记事本</h1>
<div class="box">
<input type="text" class="ipt" placeholder="请输入任务">
<button>添加任务</button>
</div>
<section class="liebiao">
<ul class="make-list">
<li class="make" v-for="(item, index) in list" :key="item.id">
<div class="view">
<span class="index">{{ index + 1 }}</span>
<label>{{ item.name }}</label>
<button @click="del(item.id)" class="destory">X</button>
</div>
</li>
</ul>
</section>
</div>
<script>
var app = Vue.createApp({
data() {
return {
list: [
{ id: 1, name: '看书两小时' },
{ id: 2, name: '跑步40分钟' }
]
}
},
methods: {
del(id) {
this.list = this.list.filter(item => item.id !== id)
// console.log(id)
}
}
}).mount('#app')
</script>
</body>
请注意,在修改后的代码中,del
方法已经被移动到了正确的位置。
var app = Vue.createApp({
data() {
return {
list: [{
id: 1,
name: '看书两小时'
},
{
id: 2,
name: '跑步40分钟'
}
],
}
},
methods: {
del(id) {
this.list = this.list.filter(item => item.id !== id)
// console.log(id)
}
}
}).mount('#app')
加上function 看看
methods: {
function del(id){
this.list =this.list.filter(item => item.id !== id)
// console.log(id)
}
}