如何在 VueJS 中的 SetTimeOut 中提交存储



我正在使用Vue.js在Laravel中制作一个应用程序。我想在触发方法时等待两秒钟,然后执行存储操作。但是,当我实现这一点时,我收到一个错误。

这是我的代码:

.listen('TeamLeaving', e => {
setTimeout(function() {
axios.get('/api/team/' + e.team.id + '/pulse').then(response => {
if (response.data === 0) {
// here is where it messes up
this.$store.commit('team/REMOVE_TEAM', e.team)
}
})
}, 2000)
// this.$store.commit('team/REMOVE_TEAM', e.team);
})

但是我收到一个错误:

Uncaught (in promise) TypeError: Cannot read property 'commit' of undefined

当我在setTimeout之外进行提交时,它工作得很好。所以我假设setTimeout内部有问题.有人可以帮我解决这个问题吗?

这篇文章可能会帮助你: 如何在 vueJs 方法中设置超时

重要的一点:

匿名函数中的this附加到该匿名函数 不是你的主要功能

你可以试试这个:

.listen('TeamLeaving', (e) => {
let vm = this;
setTimeout(function () {
axios.get('/api/team/'+ e.team.id + '/pulse')
.then(response => {
if (response.data === 0) {
//here is where it messes up
vm.$store.commit('team/REMOVE_TEAM', e.team)
}
});

}, 2000);
// this.$store.commit('team/REMOVE_TEAM', e.team);
});

相关内容

  • 没有找到相关文章

最新更新