2016-06-07 5 views
0

하위 경로 인 일련의 탭을 보유하는 상위 경로가 있습니다.자식 경로 변경시 Ember 상위 모델 새로 고침

상위 경로에는 해당 하위 노드의 데이터와 접하게 연관된 데이터를 수집하기 위해 JSONAPI 끝점에 도달하는 모델이 있습니다.

부모 경로가 액세스하는 데이터가 상당히 빠르게 변경 될 수 있으므로 사용자가 자식 경로를 통과 할 때마다 업데이트하고 싶습니다.

자식 경로가 전환 될 때마다 상위 경로에서 모델 훅을 본질적으로 다시 해결할 수있는 방법이 있습니까?

아래에서 비슷한 것을 시도해 보았지만 reload는 부모 모델에서 사용할 수있는 방법이 아닌 것 같습니다. 당신이 아이 경로로 전환 할 때

부모 경로

export default Route.extend({ 
    model() { 
    return this.store.findAll('parentData'); 
    } 
}); 

하위 경로

export default Route.extend({ 
    beforeModel() { 
    this.modelFor('parentRoute').reload(); 
    } 
}); 
+0

예, 그게 내가 나쁜에 작동하지 않는, 생각하고 있었는데 내용은 다음과 같습니다

그래서 다음과 같이 될 것입니다. parentRoute를 얻었습니까? beforeModel에서 액세스 할 수 있다고 디버거에서 확인 했습니까? –

+0

그래, 액세스 할 수 있지만 개체가 수명주기의이 시점에서 다시로드 메서드가없는 것 같습니다. 그렇게했다면 불행히도 아동 경로를 다시로드 할 것이라고 생각합니다. –

답변

0

당신은 yourParentModel.reload()를 사용하여 상위 경로 모델을 다시로드 할 수 있습니다.

+0

이것은 약속 된 모델에서는 작동하지 않습니다. –

+0

시도한 코드를 나에게 보낼 수 있습니까? –

+0

질문 –

0

부모 모델을 다시로드하면 자식 경로 모델도 다시로드되어 무한 루프로 다시로드됩니다.

자녀 경로에서 findAll()을 수행하고 상위 경로 모델 대신 해당 데이터를 사용하는 것이 가장 좋은 방법이라고 생각하십시오.

+0

을 편집 하겠지만 그 때마다 해당 데이터를 상위 템플릿으로 다시 피드해야합니다. 각 전환에 대한 작업으로 데이터를 전달하는 것은 성가신 것처럼 보입니다. –

+0

음, 아무것도 전달할 필요가 없습니다. findAll 메소드는 저장소 변경에 반응하므로 자식 경로에서 findAll ('parentData')을 수행하면 상위 경로의 parentData도 업데이트됩니다. – Igor

0

상위 경로에 'willTransition'후크를 사용하는 것이 좋습니다. 모든 어린이 경로 전환은 상위 경로의 willTransition 후크를 트리거하며 상위 경로가 방금 초기화 될 때 시작되지 않습니다.

export default Route.extend({ 
    model() { 
     return this.store.findAll('parentData'); 
    }, 
    actions: { 
     willTransition() { 
      this.controller.get('model').reload(); 
     } 
    } 
}); 
관련 문제