Laravel 5 vue router.push:TypeError:onComplete不是一个函数
多年来,我一直在使用CodeIgniter并试图了解Laravel+VueJS是如何工作的,现在我对VueJS+Laravel还是个新手。无论如何,我得到了一个运行Vue加载层包的测试页面,该测试页面在onClick事件上触发加载覆盖,该事件使用router.push加载新页面。我阅读了文档,其中有两个附加参数,即router.push的onComplete和onAbort,并提出了以下方法。除控制台中出现错误外,所有操作都按预期进行 控制台错误Laravel 5 vue router.push:TypeError:onComplete不是一个函数,laravel-5,vue.js,Laravel 5,Vue.js,多年来,我一直在使用CodeIgniter并试图了解Laravel+VueJS是如何工作的,现在我对VueJS+Laravel还是个新手。无论如何,我得到了一个运行Vue加载层包的测试页面,该测试页面在onClick事件上触发加载覆盖,该事件使用router.push加载新页面。我阅读了文档,其中有两个附加参数,即router.push的onComplete和onAbort,并提出了以下方法。除控制台中出现错误外,所有操作都按预期进行 控制台错误 [vue-router] uncaught er
[vue-router] uncaught error during route navigation:
TypeError: onComplete is not a function
转到方法
goTo(routeName) {
let self = this
self.$nextTick( function() {
// Show Vue Loading Layer
let loader = this.$loading.show({
loader: 'spinner',
color: '#e8b30f',
backgroundColor: '#000',
opacity: 0.5,
})
// Retrieve new page
self.$router.push(
// First param : location
{name: routeName},
// Second param : onComplete
setTimeout(() => loader.hide(), 3 * 1000)
)
})
}
即使我得到了预期的结果,我仍然想知道为什么控制台上会出现这个错误
第二,有没有更好的方法?我使用setTimeout()的唯一原因是新页面加载太快,无法在未设置setTimeout()的情况下正确显示加载覆盖
谢谢您的帮助或提示。到
的第二个参数。push
需要一个函数,您传递的是
setTimeout(() => loader.hide(), 3 * 1000)
返回一个整数,如下所示:
要修复它,可以将其包装到函数中
() => {
setTimeout(() => loader.hide(), 3 * 1000)
}
因此,您的goto
方法如下所示
goTo(routeName) {
let self = this
self.$nextTick( function() {
// Show Vue Loading Layer
let loader = this.$loading.show({
loader: 'spinner',
color: '#e8b30f',
backgroundColor: '#000',
opacity: 0.5,
})
// Retrieve new page
self.$router.push(
// First param : location
{name: routeName},
// Second param : onComplete
() => setTimeout(() => loader.hide(), 3 * 1000)
)
})
}
伟大的工作完美。我会接受这个答案。然而,我想要的真正目的是用onClick事件触发加载覆盖,然后在加载新页面后隐藏它。有更好的方法吗?再次感谢。@AllieSyadiqin vue路由器的文档很好地说明了这一点