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回答

好帮手慕夭夭

2019-06-20

你好同学,你之前的理解是没有问题的。this指向的就是实例ToDo。如下的index也指向的是data中的index

http://img.mukewang.com/climg/5d0b27bb0001221f06210268.jpg

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

http://img.mukewang.com/climg/5d0b281500010ef301650069.jpg

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

点击第二个:

http://img.mukewang.com/climg/5d0b284f0001131302920069.jpg

结果:

http://img.mukewang.com/climg/5d0b285800013c5601960028.jpg

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

http://img.mukewang.com/climg/5d0b28630001a17405310084.jpg

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

http://img.mukewang.com/climg/5d0b2a890001c48412680711.jpg

祝学习愉快 ,望采纳。

0
htstimetosail
h 啊,/笑cry,是我太不细心了!!感谢灰灰老师!!
h019-06-20
共1条回复

0 学习 · 10739 问题

查看课程