前幾日看了一些關(guān)于防抖的文章,今早在自己項(xiàng)目實(shí)現(xiàn)時(shí),發(fā)現(xiàn)一個(gè)問(wèn)題,代碼如下
data () {
return {
button: true
}
}
save () {
if (this.button == true) {
this.button = false
//處理保存事件
}
setTimeout(function () {
this.button = true
}, 2000)
}
初始代碼是這樣的,結(jié)果導(dǎo)致點(diǎn)擊按鈕之后,只處理一次事件,定時(shí)器雖然也走了,
但是button的結(jié)果就一直是 false。
經(jīng)過(guò)測(cè)試發(fā)現(xiàn),setTimeout里的this對(duì)象指向的時(shí)window,
而其他this對(duì)象指向的時(shí)VueComponent
為了解決這個(gè)問(wèn)題,將代碼修改成這樣:
data () {
return {
button: true
}
}
save () {
const vm = this
if (vm.button == true) {
vm.button = false
//處理保存事件
}
setTimeout(function () {
vm.button = true
}, 2000)
}
這樣就解決了對(duì)象不一致的問(wèn)題