Javascript 删除v-for指令中的列表项

Javascript 删除v-for指令中的列表项,javascript,arrays,vue.js,vuejs2,v-for,Javascript,Arrays,Vue.js,Vuejs2,V For,这里我有一个组件,它显示一个列表。 通过单击列表项一侧的一个按钮,可以删除列表中的每个元素 模板 this.questions = this.questions.splice(index, 1) 脚本 this.questions.splice(index, 1) removeQuestion(evt,索引){ console.log(索引) 本.问题.拼接(索引,1) } 结果 注意:第一行不是列表的一部分 当我从组件接收到“console.log”这个“index”变量时,打印的

这里我有一个组件,它显示一个列表。 通过单击列表项一侧的一个按钮,可以删除列表中的每个元素

模板

this.questions = this.questions.splice(index, 1)

脚本

this.questions.splice(index, 1)
removeQuestion(evt,索引){
console.log(索引)
本.问题.拼接(索引,1)
}
结果

注意:第一行不是列表的一部分

当我从组件接收到“console.log”这个“index”变量时,打印的值是“undefined”,但正如您所看到的,在部分“delete”符号中,索引是正确的

我怎样才能解决这个问题

致意

编辑日期2020/04/26脚本代码已修改,因为split方法返回包含已删除项的数组,并从数组中删除该项:

之前

this.questions = this.questions.splice(index, 1)
当前

this.questions.splice(index, 1)

您只从侦听器传递了一个值,即索引,因此该方法将在其第一个参数
evt
中接收该值。删除该参数以获取
索引中的值

removeQuestion(索引){
console.log(索引)
本.问题.拼接(索引,1)
}
或者,如果要保留这两个参数,请确保从侦听器传递
$event

@click=“removeQuestion($event,index)”
您可能期望事件会自动通过,因为在不调用的情况下附加处理程序时,默认情况下Vue将通过事件。例如:

@click=“removeQuestion”

这会自动传递一个参数,
$event
。但是,如果指定自己的调用(即
()
),则不会发生这种情况。

您只从侦听器传递了一个值,即索引,因此方法将在其第一个参数
evt
中接收该值。删除该参数以获取
索引中的值

removeQuestion(索引){
console.log(索引)
本.问题.拼接(索引,1)
}
或者,如果要保留这两个参数,请确保从侦听器传递
$event

@click=“removeQuestion($event,index)”
您可能期望事件会自动通过,因为在不调用的情况下附加处理程序时,默认情况下Vue将通过事件。例如:

@click=“removeQuestion”

这会自动传递一个参数,
$event
。但如果您指定自己的调用(即
()
),则不会发生这种情况。

谢谢您的帮助,问题已解决!你能不能把“this.questions=this.questions.splice(索引,1)”替换为“this.questions.splice(索引,1)”,因为这是错误的?谢谢你的帮助,问题解决了!你能不能把“this.questions=this.questions.splice(索引,1)”替换为“this.questions.splice(索引,1)”,因为这是错误的?