我希望有一个特定的行为,但只有当我的路线是最后一个时。
例如,我有 路线1:“posts.index” 路线2:“posts.index.show”
如果我直接调用它,我想在post.index中做一些事情,但如果我直接访问posts.index.show,我不想调用它。有没有办法知道posts.index是否是当前被调用路由的最后一个状态。
答案 0 :(得分:3)
只有 leaf 路由可以访问,这意味着您可以遍历节点路由,但最终不会停留在路径上。
在您的情况下,posts.index
永远不会是路由器的最终状态。我建议你有类似的东西:
posts: Ember.Route.extend({
route: 'posts',
// connectOutlets as needed for layout purpose...
collection: Ember.Route.extend({
route: '/',
// connectOutlets to render collection & so on...
}),
member: Ember.Route.extend({
route: '/:id',
// connectOutlets: here, you will at least store the instance for later use in children routes, and probably render its outlet
show: Ember.Route.extend({
route: '/',
// connectOutlets if needed.
})
// here, add other routes like edit, ...
})
})
在member
路由中,您可以进行常见处理(至少检索和渲染实例),然后在其connectOutlets
函数内根据叶子路径进行专门处理。