2015-01-27 2 views
1

이 작업이 가능합니까? 나는 내가 할 수있는 것을 안다 :Ember-data가 store.find를 사용하여 단일 json 객체를 반환합니다.

this.store.find('model', 1) 

그러나 나는 그것이 원하는 것이 아니다. (나는이 같은 경로에서 검색하는 경우 작업) : :이 형식으로 JSON을 검색하고 싶은

App.OptionsRoute = Ember.Route.extend({ 
model: function() { 
    return { 
     "options":{ 

      "id": "1", 
      "headline": "A Headline", 
      "results": [ 

       { 
        "id": "1", 
        "title": 'Option 1', 
       }, 
       { 
        "id": "2", 
        "title": "Option 2" 
       } 
      ] 
     } 

    }; 
} 
}); 

옵션 모델 :

App.Options = DS.Model.extend({ 
headline: DS.attr(), 
results: DS.attr() 
}); 

options.hbs

<h5>{{options.headline}}</h5> 

    {{#each item in options.results}} 
     <h5>{{item.title}}</h5> 
    {{/each}} 

RESTAdapter를 사용하고 있습니다. 그리고 그 경로에서 검색 할 수있는 유일한 모델입니다. 나는 ember-data를 사용할 수 있기를 원하지만 store.find는 배열을 기대한다.

+0

'옵션 '모델입니까? 관련 모델 (상위 모델 및 하위 모델 [결과에 포함])과 관계 코드를 공유 할 수 있습니까? 'RESTAdapter'를 사용하고 있습니까? –

+0

@ 대니얼 - 좀 더 자세한 내용으로 내 질문을 업데이트했습니다. 내 데이터 구조가 ember-data와 호환되는지 또는 내가 제공 한 코드를 기반으로 조정해야하는지 알고 있습니까? – Operator

답변

1

여기에 요점이 누락되었습니다. 먼저 응답에 잘못된 형식을 사용하고 있습니다. 커스텀 시리얼 라이저가 필요합니다. 이와 같은 좀 더 효과적인 대안을 사용할 수도 있습니다 (그러나 작동합니다). 경로 :

App.OptionsRoute = Ember.Route.extend({ 
    model: function() { 
    that = this; 
    return new Promise(function (resolve, reject) { 
     url = that.store.adapterFor('option').buildURL('option'); 
     Ember.$.getJSON(url).then(function (json) { 
     body = json.options; 
     correct = { 
     options: [ 
      body 
     ] 
     }; 
     that.store.pushPayload('option', correct); 
     resolve(that.store.all('option').get('firstObject')); 
    }); 
    }); 
    } 
}); 

템플릿 :

<h5>{{model.headline}}</h5> 

    {{#each item in model.results}} 
     <h5>{{item.title}}</h5> 
    {{/each}} 

응용 프로그램 출력 :

A Headline 
Option 1 
Option 2 

Working demo - 나는 서버에서 응답을 다시 $.mockjax를 사용하고 있음을 알 수 있지만,이 형식을 일치하십시오 제공됩니다.

+0

감사합니다. Daniel,이 솔루션이 효과적이었습니다. 그래서 내가 옳다면 배열에서 페이로드를 래핑합니다. 그리고 우리가 ember-data 'smartness'를 유지할 수 있도록 상점에 밀어 넣으십시오. '잘못된 형식'을 사용하면 배열이 아닌 객체를 검색하려고 했습니까? 배열은 직렬화없이 ember-data와 함께 작동하는 유일한 형식입니까? 다시 한번 감사드립니다. – Operator

+0

id를 store.find에 전달한 경우에만 객체를 검색 할 수 있습니다. Ember 가이드에서 REST 어댑터가 기대하는 응답을 볼 수 있습니다. –

+0

감사합니다. Daniel. 쿼리 매개 변수를 buildUrl 메소드에 전달할 수 있는지 알고 있습니까? 엠버 가이드에서 그 어떤 대답도 찾을 수없는 것 같습니다. 하지만 getJSON 메서드를 사용하면이 방법이 가능하다는 것을 알고 있습니다. – Operator

관련 문제