我想使用JS Hook描述here . 特别是,我想将 afterEnter
钩子与异步组件一起使用 .
这是我的异步组件:
Vue.component('example', function(resolve, reject){
let data = {
text: 'test data',
};
$.post('http://example.com', data, function(r){
r = JSON.parse(r);
if( r.success ) {
resolve({
template: r.data,
afterEnter: function(el, done){
console.log('test');
}
});
}
});
});
这是ajax调用从服务器获取的内容,它是 r.data
中传递给模板的内容 .
<transition v-on:after-enter="afterEnter"></transition>
这是我得到的两个错误 .
[Vue warn]: Property or method "afterEnter" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.
[Vue warn]: Invalid handler for event "after-enter": got undefined
是否可以将JS钩子与异步组件一起使用?如果没有,我该怎么做呢?我的目标是在Vue(和/或vue-router)将组件模板注入页面后运行自定义JS,这样我就可以初始化图像滑块等等 . 每次导航组件时,我的自定义JS都会触发,而不仅仅是第一次加载时,这一点很重要 .
谢谢 .
1 回答
该警告意味着Vue正在寻找(但无法找到)您在模板中引用的名为
"afterEnter"
的属性或方法 . 您已在resolve
函数中定义了afterEnter
,就好像它是一个生命周期挂钩,但它需要是您的Vue实例的方法之一 .所以,你的
resolve
函数应如下所示: