【发布时间】:2015-08-19 19:01:33
【问题描述】:
我有这个路由器设置
this.route('dashboard', function () {
this.route('numbers');
this.route('workspaces', function () {
this.route('workspace', {path: '/:wid'});
});
dashboard.workspaces 是导航栏中的链接。当您单击它时,它会加载dashboard.workspaces.workspace 并立即重定向到第一个子导航。我是这样做的:
export default Ember.Route.extend({
model: function() {
return this.modelFor('dashboard');
},
afterModel: function(model) {
this.transitionTo('dashboard.workspaces.workspace', model.get('workspaces.firstObject.id'));
}
}
这一切都很好,除非我已经在dashboard.workspaces.workspace 路由上并单击dashboard.workspaces,然后没有调用“afterModel”钩子,我最终进入了dashboard.workspaces,这是不需要的空白页面。还有其他总是会被调用的钩子吗?我已经尝试过“激活”和其他几个没有运气的人。
如果能够保存最后一个子导航转换并在单击主导航时重定向到,那也很好。
【问题讨论】:
-
据我记忆,
beforeModel每次都会被调用。但是你想要做什么,为什么你在导航栏中有一个指向 dashboard.workspaces 的链接? -
Gennady beforeModel 肯定只打了一次电话。我需要到 dashboard.workspaces 的主导航链接,该链接将展开到页面其他部分的 dashboard.workspaces.workspace 选项卡。每个标签都有一个单独的页面。
-
当您已经在路线上并且只是从页面中删除子路线时,不会命中任何路线挂钩
-
除非您的模型挂钩所做的事情与使用 id 调用商店不同,否则您最好在过渡中使用模型而不是 id
标签: ember.js ember-data