VUE 中使用 setTimeout() setInterval()函数的问题

本文探讨了在Vue中使用setTimeout函数时遇到的问题,即其内部this指向并非Vue实例,导致无法直接更新Vue实例的数据属性。通过调整引用方式解决了该问题。

在vue点击事件调用函数的过程中,想通过 setTimeout() setInterval()函数来延迟修改参数时,发现函数没有执行,控制台也没有报错,代码如下:

var vm_target = new Vue({
                el: '#vm_target',
                data: {
                    clickSubmitBtn:false
                },
                methods:{
                    myFunc:function(){
                        setTimeout(function(){
	                    this.clickSubmitBtn = true; //此处修改data中的参数时无效
                        },500);
                    }
                }
             })

 之后在调试的时候,发现,setTimeout()函数中的 this 指向的并非vue对象,将this.clickSubmitBtn = true; 修改为 vm_target.clickSubmitBtn = true;之后 ,代码便可以正常执行。

var vm_target = new Vue({
                el: '#vm_target',
                data: {
                    clickSubmitBtn:false
                },
                methods:{
                    myFunc:function(){
                        setTimeout(function(){
	                    vm_target .clickSubmitBtn = true; //修改此处
                        },500);
                    }
                }
             })

 看来之后还需要详细的去了解JS中的this,到底指向谁了,希望能帮助到其他人。

转载于:https://www.cnblogs.com/liangjing-yy/p/9019687.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值