나는 겉보기에 단순한 엠버 질문에 당혹 스럽다. 난 active_model_serializers meta data serialization rails 컨트롤러에서 내 레일 current_user 메서드를 serialize하는 데 사용하고 this guy's temporary solution 사용하여 전역 ember 변수에 해당 current_user 메타 json을 추출하고 설정합니다.Ember.js current_user - 컨트롤러에서 전역 변수에 액세스하기
App.CustomRESTSerializer = DS.RESTSerializer.extend({
extractMeta: function(loader, type, json) {
var meta;
meta = json[this.configOption(type, 'meta')];
if (!meta) { return; }
Ember.set('App.metaData', meta);
this._super(loader, type, json);
}
});
이 시점까지는 모두 좋습니다. 지금은 : 즉, 특정 속성을 호출하여 핸들에서도 App.metaData.current_user에 입력하고 의해
{{App.metaData.current_user.email}}
을 콘솔에서 CURRENT_USER 정보에 액세스 할 수 있습니다 및 이메일 속성은 템플릿에 표시됩니다. 문제는 ember 컨트롤러에서 전역 변수에 액세스하려고 할 때 발생합니다. 그것은 너무 어리석게 쉬운 것처럼 보이지만 어떤 ember 컨트롤러 내에서 current_user에 액세스 할 수없는 것 같습니다. 나는 시도했다 :
currentUserBinding: 'App.metaData.current_user',
currentUser: function() {
return App.metaData.current_user;
}.property(),
Ember.get('App.metaData.current_user')
및 몇 가지 다른 방법이 있지만 액세스 할 수 없습니다. 콘솔과 핸들 바에서 직접 경로를 통해 current_user에 쉽게 액세스 할 수 있지만 엠버 컨트롤러에서는 액세스 할 수 없다는 것은 기괴합니다. 나는 명백한 것을 놓치고 있어야합니다.
도움을 주시면 감사하겠습니다.
비슷한 시나리오에서'User' 모델을 만들어서'ApplicationController'의 속성으로 설정했습니다. 그래서 내 경로에서'controllerFor'를 통해 또는 컨트롤러에서'needs'를 통해 액세스 할 수 있습니다. – MilkyWayJoe
그러면 서버에서 하나의 사용자 객체를 직렬화하고 currentUser와 같은 객체에 바인딩 된 ApplicationController에 currentUser 속성을 설정합니다. App.User.find (0)? –
예, 아래 예를 참조하십시오. 나는 또한 조롱 된 요청으로 바이올린을 추가했습니다. – MilkyWayJoe