Ember:路线取决于父路线的控制器

时间:2013-11-01 11:51:09

标签: ember.js ember-router ember-controllers

我们假设有这样的路线:

  @resource 'group', path: '/group/:group_id', ->
    @route 'tweets'

现在我有这些路径和控制器:

  1. group - 这里我的模型由id
  2. 加载
  3. group.index - 这里我使用的是那个模型
  4. group.tweets - 这里我需要加载一些依赖于group.id
  5. 的附加集合

    在GroupTweetsRou​​te:

    中执行此操作(无法正常工作)的天真方式
      model: ->
        @store.find 'tweet',
          group_id: @get('controllers.group.id')
          tolerance: @get('controllers.group.membership.tolerance')
    

    我也试过了控制器。 所以目前我没有团体。但我稍后会看到它,或者如果我从group.index页面到达那里。

    我的猜测是,在beforeModel回调中我可以做一些异步的基于promise的事情,等到组加载完毕。但具体到底是什么?

2 个答案:

答案 0 :(得分:2)

modelFor可以在模型解析阶段使用。在构建和设置控制器之前,所有模型都已解析(这就是为什么你的controllerFor在深层模型钩子中不起作用的原因)。

var group = this.modelFor('group'),
    id = group.get('id'),
    tolerance = group.get('membership.tolerance');

答案 1 :(得分:0)

好的,这是我的案例中的解决方案:

  model: ->
    @store.find 'tweet',
      group_id: @modelFor('group').get('id')
      tolerance: @modelFor('group').get('membership.tolerance')