前几日看了一些关于防抖的文章,今早在自己项目实现时,发现一个问题,代码如下
data () {
return {
button: true
}
}
save () {
if (this.button == true) {
this.button = false
//处理保存事件
}
setTimeout(function () {
this.button = true
}, 2000)
}
初始代码是这样的,结果导致点击按钮之后,只处理一次事件,定时器虽然也走了,
但是button的结果就一直是 false。
经过测试发现,setTimeout里的this对象指向的时window,
而其他this对象指向的时VueComponent
为了解决这个问题,将代码修改成这样:
data () {
return {
button: true
}
}
save () {
const vm = this
if (vm.button == true) {
vm.button = false
//处理保存事件
}
setTimeout(function () {
vm.button = true
}, 2000)
}
这样就解决了对象不一致的问题
网友评论