只有在路线是最短路径时才能做某事

时间:2012-08-03 15:33:35

标签: ember.js

我希望有一个特定的行为,但只有当我的路线是最后一个时。

例如,我有 路线1:“posts.index” 路线2:“posts.index.show”

如果我直接调用它,我想在post.index中做一些事情,但如果我直接访问posts.index.show,我不想调用它。有没有办法知道posts.index是否是当前被调用路由的最后一个状态。

1 个答案:

答案 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函数内根据叶子路径进行专门处理。