2013-11-01 5 views
0

이의이 같은 경로가있는 가정하자 부모 경로의 컨트롤러에 따라 :엠버 : 경로

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

지금은 이러한 경로와 컨트롤러가 있습니다

  1. 그룹 - 여기에 내가 모델 ID로로드 한
  2. group.index - 여기서 그 모델을 사용합니다.
  3. group.tweets - group.id에 의존하는 추가 컬렉션을로드해야합니다.

나이브 방법은 GroupTweetsRoute에서 (작동하지 않는) 이렇게하려면 :

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

내가뿐만 아니라 controllerFor을 시도했다. 그래서 지금 나는 그룹이 없습니다. 그러나 나는 나중에 그것을 보거나 그룹 .index 페이지에서 그곳으로 가면 볼 수 있습니다.

내 생각 엔 그룹이로드 될 때까지 beforeModel 콜백에서 수행 할 수있는 비동기 약속 기반 물건이있는 것 같습니다. 그러나 정확하게 무엇?

답변

2

modelFor 모델을 모델링 단계에서 사용할 수 있습니다. 모든 모델은 컨트롤러가 만들어지고 설정되기 전에 해결됩니다 (이것이 바로 당신의 더 깊은 모델 훅에서 controllerFor가 작동하지 않는 이유입니다).

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

Ahaha :) –

0

좋아, 여기 내 경우에 작동하는 솔루션입니다 : 그냥 분 이내에, 좋아요 ...

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