2016-09-18 11 views
0

afterModel 후크가있는 경로가 있습니다. Ember.js 액션 버블 링하지만 컨트롤러가 작동 상태에서 정의되지 않았습니다.

doInAppRoute: function(){ 
    var controller = this.get('controller'); 
    controller.set('someProp', true); 
} 

나는 afterModel 후크 경로에서 거품으로 작업을 할 수

, 나는 다음과 같은 오류가 발생합니다 :

afterModel: function(model, transition){ 
    transition.send('doInAppRoute'); 
} 

나는 내 응용 프로그램 경로에서 작업을해야합니다. 나는 응용 프로그램 템플릿에 doInAppRoute에 액션 통화를 보류하는 경우

Error while processing route: embed Cannot read property 'set' of undefined TypeError: Cannot read property 'set' of undefined

는 모든 것이 예상 실행되는.

doInAppRoute에 대한 작업 호출이 거품이되면 응용 프로그램 경로에 this.get('controller')이 정의되지 않습니다. 왜?

그리고 버블 액션이 애플리케이션 컨트롤러 속성을 업데이트하도록 어떻게 변경 될 수 있습니까?

+0

컨트롤러는 모든 모델 후크가 해결 될 때까지 설정되지 않습니다. –

+0

컨트롤러에서 상태 관련 속성을 유지한다고 말하고 싶습니다. 귀하의 경우 경로에서'someProp'을 변경하면 setupController를 거치지 않는 한 템플릿에 반영되지 않습니다. – kumkanillam

답변

0

@torazaburo 덕분에 올바른 방향으로 나를 안내 할 수있었습니다.

이것은 내가 한 행동입니다.

someProp을 적용 경로의 초기 값으로 설정하십시오.

doInAppRoute: function(){ 
    this.set('someProp', true); 
} 

그리고 응용 프로그램 경로 setupController에서 할 :

setupController: function(controller, model){ 
    controller.set('someProp', this.get('someProp')); 
    controller.set('model', model); 
    } 

그런 다음 모든 작업을해야

someProp: false, 

그런 다음 응용 프로그램 경로 행동에 그런 짓을.

+0

'this._super (... arguments);를 호출하는 것이 좋습니다. 모델을 설정하는 대신 버그가 발생하지 않습니다. – locks