2017-09-05 10 views
0

successfuly 내 페이지가로드 된 후 어느 정도 나중에 params.id 정보가있는 다음 페이지로 리디렉션하고 싶습니다. 언제든지 params을 다시 찾는 올바른 방법은 무엇입니까?경로에서 모델 후크 뒤에`params.id`를 얻는 방법은 무엇입니까?

export default Ember.Route.extend(Validation, { 

    model: function(params) { //where to store? 

    if(this.store.hasRecordForId('card-list', params.id)){ 
     return this.store.peekRecord('card-list', params.id); 
     } 

    }, 


    actions:{ 

    goToNext(){ 
     return; 
     this.transitionTo('cs2i.balance.balanceReview', 12); //how to get id? 
    }, 

이 중 하나가 여기에 나를 도와 : 여기

내 router.js입니까? 미리 감사드립니다.

답변

1

템플릿 때문에 모델에 ID가 있습니다. 따라서 액션에 직접 전달할 수 있습니다.

참고 : 이것은 동일한 경로에 직접 연결되어 있으므로 goToNext에서 다음 ID를 가져 오기 위해 수학을 수행해야합니다. 그러나 레코드가 삭제되고 다른 레코드가 생성 된 경우 간단한 +1을 수행 할 정도로 일관성이 없습니다. 다음 레코드의 실제 ID를 갖는 것이 더 나을 것입니다. API의 관계에있을 수 있습니다. 그런 다음 model.id 대신 model.previousId와 같은 작업을 수행 할 수 있습니다.

// route.js 
export default Ember.Route.extend(Validation, { 
    model: function(params) { 
    if(this.store.hasRecordForId('card-list', params.id)){ 
     return this.store.peekRecord('card-list', params.id ; 
    } 
    }, 
    actions:{ 
    goToNext(paramId) { 
     this.transitionTo('cs2i.balance.balanceReview', paramId); 
    }, 
    } 
}); 

// template.hbs 
<button {{action 'goToNext' model.id}}></button> 
0

경로 전환을 어디서 전화 할 것인지에 달려 있습니다.

라우터에서 전환을 호출하는 경우 라우터의 로컬 변수에 params 데이터 (또는 ID) 만 저장하면됩니다.

전환이 구성 요소에서 완료되면 모델의 일부인 params 데이터 (또는 ID 만 해당)를 구성 요소로 전달합니다.