2014-03-13 2 views
0

사용자를로드 한 후에 내 RESTAdapter의 헤더를 변경하려고하지만 속성에 액세스 할 수 없습니다.Ember.js -로드 된 레코드에 액세스 할 수 없습니다.

어떤 아이디어가 필요한가요?

관련 코드 :

var user = ''; 
App.MainRoute = Ember.Route.extend({ 
model: function(params){ 
    user = this.store.find('user',{email: params.email}); 
    alert(user.hash); //get a undefined 
    return user; 
}, 
actions:{ 
    addList: function(){ 
     var list = this.store.createRecord('list', { 
      name: 'New list', 
      desc: 'Describe it here' 
     }); 
     this.store.find('user', 1).then(function(user){ 
      list.set('user', user); 
     }) 
     list.save(); 
    } 
} 
}) 

this.store.find('user', {email: params.email});에 JSON 응답 :

{ 
    "users": [ 
    { 
     "id": 1, 
     "hash": "66ff7d6eae591ca2a7d6b419991690e8", 
     "email": "[email protected]", 
     "name": "", 
     "lists": [] 
    } 
    ] 
} 

모델 정의 : https://gist.github.com/Osile/5544ccab1997c4da2b5b

+0

모든 오류 당신은 다음과 같은 Handlebars.js 템플릿을 사용할 수 있습니까? –

+0

아니요, 슬프게도 .. –

+0

'user'와'list'에 대해'DS.Model'을 정의 할 수 있습니까? 코드를 공유 할 수 있습니까? –

답변

1
당신은 모델의 약속을 반환해야

하지만 접근 할 수있다 더 일찍. 코드 :

model: function(params){ 
    users = this.store.find('user', { email: params.email }); // returns promise 
    users.then(function(item) { // resolves promise 
     user = item.get('firstObject'); 
     alert(user.get('hash')); 
    }); 
    return users; // model will wait for data 
} 

작동합니다.

<script type="text/x-handlebars" data-template-name="main"> 
    From model: 
    <ul> 
    {{#each}} <!-- Iterate over array resolved from promise. --> 
     <li>{{hash}}</li> 
    {{/each}} 
    </ul> 
</script> 

전체 코드 : 콘솔에서 emberjs.jsbin.com

+0

예를 들어 이것은 많은 도움이되었지만 내 문제를 해결 한 후 더 이상 HTML 코드에서 모델에 액세스 할 수 없습니다. 할당되지 않았거나 Ember Inspector –

+0

조금 조사한 결과 레코드가로드되기 전에 리턴이 호출되고'.then' 콜백 내부에서 리턴을 호출 할 수 없다는 것을 알아 냈습니다. –

+1

응답이 업데이트되었습니다. –

관련 문제