2014-10-29 3 views
1

이것은 엠버에서 만든 중첩 된 경로입니다.중첩 된 라우팅에서 params 가져 오기

App.Router.map(function(){ 
this.resource('makes', function(){ 
    this.resource('model', {path: ':division_id'}, function(){ 
    this.resource('zip', {path: ':model_id'}); 
    }); 
}); 
this.resource('spec', {path: '/makes/:division_id/:model_id/:zipcode'}); 
}); 

ziproute에서 내가 params를 기록 할 때 이것은 출력입니다.

Object {model_id: "ILX"} 

하지만 경로는/makes/Acura/ILX와 비슷합니다. 그래서 나는 division_id와 model_id를 모두 가져야한다.

params에서 division_id를 가져올 수 없습니다. 이것이 당신이가는 것을 정확하게 경우 http://jsbin.com/jujene/36/edit

+0

나는 이것이 불가능하다고 믿습니다. 자식 경로는 부모 경로 매개 변수에 액세스 할 수 없습니다. 상위 경로에 대한 모델을 가져와야하고 그런 식으로 ID를 얻어야합니다. –

+0

안녕하세요 Mike1o1, 부모 루트를 얻는 방법을 설명해 주시겠습니까 –

답변

0

확실하지 :

예제 응용 프로그램은에서 수행됩니다. 경로에서는 모델의 경로가 PARAMS에 대한 액세스 권한을 가지고 있기 때문에 Route.modelFor

App.ModelRoute = Ember.Route.extend({ 
    model: function(params){ 
     console.log('model params', params); 
     return { id: params.division_id}; 
    }, 
}); 

, 당신은 당신의 모델 길을 설정할 수 있습니다 사용하여 상위 모델을 얻을 수 있습니다. 이 방법으로 모델 경로가 모델을 설정합니다.

그런 다음, 우편 노선에 :

App.ZipRoute = Ember.Route.extend({ 

    model: function(params){ 
     var m = this.modelFor('model'); 
     console.log('division id', m.id); 
     console.log('zip params', params); 
     params.division_id = m.id; 
    return params; 
    } 

}); 

당신의 약간 정리 사본입니다 업데이트 된 샘플 JSbin을 참조하십시오.

+0

zip 미등록의 'set'속성을 읽을 수 없습니다. TypeError : 'undefined'속성을 읽을 수 없습니다. –

+0

어디서 가져 왔습니까? JSbin을 끝까지 정리할 시간이 없었습니다. 처음부터 시작하여 링크를 클릭하면 오류가 발생하지 않습니다. 어쨌든,이 기술은 부모 모델에 액세스하는 방법입니다. –

+0

여전히 params를 반환 할 때 모델 ID 만 얻지 만 콘솔 로그에서는 division ID도 볼 수 있습니다. 보기에서 m 변수에 액세스하는 방법 –