如何在vuejs方法中使用settimeout()函数?
我已经尝试过类似的东西,但它不起作用
fetchHole: function () {
//get data
},
addHole: function () {
//my query add new
setTimeout(function () { this.fetchHole() }, 1000)
},
我收到此错误消息:Uncaught TypeError: this.fetchHole is not a function
答案 0 :(得分:33)
在函数声明中添加bind()
调用:
setTimeout(function () { this.fetchHole() }.bind(this), 1000)
以便在函数中访问您的Vue组件this
。
旁注:在这种特殊情况下,@ nospor接受的答案更清晰。 bind
方法有点概括 - 例如,如果你想做一个匿名函数,它非常有用。
答案 1 :(得分:28)
试试这个:setTimeout(this.fetchHole, 1000)
因为匿名函数中的this
附加到该匿名函数而不是主函数
答案 2 :(得分:21)
JavaScript中的上下文this
的经典问题。
以下部分代码显示了一个简单的解决方案 - 如果您将ES6与Vuejs一起使用(默认配置为vuecli y babel)。使用箭头功能
setTimeout(()=>{
this.yourMethod()
},1000);
答案 3 :(得分:1)
我认为这也有效。
var self = this;
setTimeout(function () { self.fetchHole() } , 1000)
答案 4 :(得分:0)
使用TimeOut调用递归:
1782
答案 5 :(得分:0)
尚未将this
绑定到setTimeout
函数的方法。
setTimeout(() => { this.fetchHole() },1000)(this)
答案 6 :(得分:-1)
您可以尝试:
addHole:function(){
let vm = this
setTimeout(function(){vm.fetchHole()}, 1000)
}