在解释我的问题之前,让我告诉你我的配置。所以这是我的路由器的摘录:
Router.map(function() {
[...]
this.route('parent', {path: '/:parent_slug'}, function () {
this.route('child', {path: '/:child_slug'});
});
});
父路由显示需要parent_slug和可选child_slug的组件。所以在子路由afterModel()钩子中,我向父路由发送一个动作来更新它给组件的child_slug。
在儿童路线:
afterModel(model) {
[...]
this.send('myAction', model.childSlug);
[...]
}
在父路线中:
actions: {
myAction(slug) {
this.set('childSlug', slug);
}
}
如果我首先加载父路由然后转换到子路由,则父级将发送并正确捕获该操作,但如果我直接加载子路由,则不会捕获该操作。我试图在应用程序路径中捕获该操作并且它可以正常工作。
所以我想在childroute的afterModel()钩子中,父路由动作还没有加载。
你们知道这是一个错误还是一个正常行为?我的意思是在父路由完全加载之前开始加载子路由?
谢谢!