use*_*488 25 javascript php jquery vue.js laravel-5
我如何在vuejs方法中使用settimeout()函数?
我已经尝试过这样的东西,但它不起作用
fetchHole: function () {
//get data
},
addHole: function () {
//my query add new
setTimeout(function () { this.fetchHole() }, 1000)
},
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息: Uncaught TypeError: this.fetchHole is not a function
cee*_*yoz 40
添加bind()对函数声明的调用:
setTimeout(function () { this.fetchHole() }.bind(this), 1000)
Run Code Online (Sandbox Code Playgroud)
这样你的Vue组件this就可以在函数中访问.
旁注:在这种特殊情况下,@ nospor接受的答案更清晰.这种bind方法有点概括 - 例如,如果你想做一个匿名函数,它非常有用.
小智 32
thisJavaScript中的上下文的经典问题.
以下部分代码显示了一个简单的解决方案 - 如果您使用ES6与Vuejs(默认配置与vuecli y babel).使用箭头功能
setTimeout(()=>{
this.yourMethod()
},1000);
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为这也有效。
var self = this;
setTimeout(function () { self.fetchHole() } , 1000)
Run Code Online (Sandbox Code Playgroud)