如何在 Vue.js 方法中使用 setTimeout?

新手上路,请多包涵

如何在 Vue.js 方法中使用 setTimeout() 函数?

我已经尝试过这样的事情,但它不起作用:

 fetchHole: function () {
    //get data
},

addHole: function () {
    //my query add new
    setTimeout(function () { this.fetchHole() }, 1000)
},

我收到此错误消息: Uncaught TypeError: this.fetchHole is not a function

原文由 user3757488 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 840
2 个回答

试试这个: setTimeout(this.fetchHole, 1000) 因为匿名函数中的 this 附加到该匿名函数而不是主函数

原文由 nospor 发布,翻译遵循 CC BY-SA 3.0 许可协议

在函数声明中添加 bind() 调用:

 setTimeout(function () { this.fetchHole() }.bind(this), 1000)

这样您的 Vue 组件的 this 就可以在函数中访问。

旁注:@nospor 接受的答案在这种特殊情况下更清晰。 bind 方法更通用 - 例如,如果你想做一个匿名函数,这非常有用。

原文由 ceejayoz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题