Vue中的this指向?或者Vue代码执行流程?
来源:2-7 模板语法
itstimetosail
2019-06-20 10:48:14
<div id="todolist">
<div>
<input type="text" v-model="inputValue">
<button v-on:click="handleBtnClick">提交</button>
</div>
<ul>
<li
v-for="(i,index) in list"
v-on:click="handleItemClick"
v-bind:index="index">
{{i}}---{{index}}
</li>
<!-- 1 v-for命令控制遍历list数组,赋值i为数组项,index为数组项索引-->
<!-- 2 v-bind命令控制data中index与li标签属性index绑定-->
</ul>
</div>
<script type="text/javascript">
Vue.component
var ToDo=new Vue({
el:"#todolist",
data:{
list:[],
inputValue:"",
index:""
},
methods:{
handleBtnClick:function(){
this.list.push(this.inputValue);
this.inputValue="";
},
handleItemClick:function(){
this.list.splice(this.index,1);
// 3 this.list; this指向Vue实例“ToDo”,this.list实际上是指this.$data.list
// 4?????? this.index; 如果之前耳朵理解正确,那此处的this是指data下的index,该index与li标签的index绑定,,,,然后往下我就理解不了了,为什么这段代码可以识别到我点击的是哪个li,并且在点击的同时把index传给了data的index???代码中并没有相关的命令啊
}
}
});
</script>1/2/3注释是我的理解,基于这三点理解第4处注释是我的疑问,拜托老师啦
1回答
你好同学,你之前的理解是没有问题的。this指向的就是实例ToDo。如下的index也指向的是data中的index

可以自己在li的点击事件中输出下index,在点击的时候输出的都是空字符串:

而同学的效果也并没有实现,当点击任意一个li的时候,删掉的是第一个li,如下:
点击第二个:

结果:

这是因为如下this.index是空字符串转换为数值为0 ,所以不管点击哪一个li,一直是在删掉第一个li哦

如果想要实现点击哪一个删掉哪一个,需要在事件中传递索引作为参数,如下:

祝学习愉快 ,望采纳。
相似问题