2013-06-14 3 views
0

컨트롤러에서 기본 모델 객체를 검색하여 지속 가능하도록 만듭니다 (ember-data를 사용하지 않습니다). 확실한 방법은 다음과 같습니다.Ember js : 컨트롤러에서 기본 모델을 검색하는 방법

controller.get('content'); 

그러나 이것은 작동하지 않습니다. 문제는 다음과 같이 요약 될 수있다 :

controller.set("content", model); 

예상대로 콘텐츠를 설정하고이 시점에서

controller.get('content'); 

작품은 예상대로. 하지만 다른 속성으로 컨트롤러를 장식한다면 예.

controller.set('IamNotPartOfTheModel', false); 

갑자기 'content'에이 새로운 속성이 포함됩니다. 콘텐트 자체가 변경되지 않고 새로운 속성이 컨트롤러에만 적용될 것으로 예상했습니다. 저는 컨트롤러가 모델의 프록시라는 것을 이해합니다. 그래서 대부분의 경우 컨트롤러는 동일하고 동일하게 취급되지만, 필요할 때 분리 가능해야합니다. 이 패턴의 요점은 단지 임시적인 데이터로부터 저장되어야하는 데이터를 분리하는 것입니다. 내가 놓친 게 있니?

답변

0

는 컨트롤러에서 속성 "iamNotPartOfTheModel"가 ... ... 바로 컨트롤러에 명시 적으로 지정 모델에서 그 모델의 프록시로 그렇지 않으면 컨트롤러 역할을 디스플레이 특정 속성을 가지고

App.IndexController = Ember.ObjectController.extend({ 
    iamNotPartOfTheModel: null 
    }) 

샘플 바이올린 here

+0

이 내 목적을 위해 작동합니다, 감사합니다! 나는 아직도 그것을 좋아하지는 않지만 - 모델이 아닌 모든 속성이 컨트롤러에서 명시 적으로 선언되어야한다고 생각하지는 않습니다. 일부는 경로 처리기에 설정되어 있지만 잘 설정해야합니다. –

+0

내가 찾고있는 동작이 기본 컨트롤러의 기본 동작임을 알게되었습니다. 따라서'Ember.Controller.extend'를 사용하여 컨트롤러를 선언하는 것도 또 다른 옵션입니다. 하지만 물론 ObjectController의 기능을 잃어 버릴 수도 있지만 제 경우에는 문제가되지 않습니다. –

0

컨트롤러가 어떤 종류의 모델에 인터페이스해야합니다. 어떤 종류의 객체 참조를 제외하고는 지속 된 모델을 컨트롤러에서 분리 할 수 ​​없습니다. ember-data를 사용하지 않더라도 컨트롤러의 내용에 플러그 인하는 객체를 만들어야합니다. ember-data가없는 ember 구현에 대해서는 Evil Trout's blog을보십시오. 그 좋은 출발점.

관련 문제