2014-02-15 3 views
0

컬렉션 (목록)보기는 스파 스 배열 (모든 모델 필드가 아님)을 가져오고 이름과 ID 만 사용하여 모델 모음을 만듭니다.스파 스 어레이가있는 모델에서 백본을 가져오고 같은 모델에서 다시 페치

collection.fetch(); //fetch requesting only partial json fields 

로 시작하는 컬렉션은 통화 collection.parse 취득 해 컬렉션의 각 모델에 대한 model.parse() 각각.

모두 좋습니다.

다음 컬렉션의 모델 중 하나에서 다시 가져 오기 -은 단일 모델보기에 대해 수행됩니다. 이번에는 모든 필드를 요청합니다. 이름, 제목, 설명 등

model.fetch({success: function(view) {console.log("yeah");}); //fetch requesting all json fields 

백엔드 나머지 서버는 요청과 제공된 응답을 표시합니다.

콘솔에 "예"가 표시됩니다. 즉, 모델 가져 오기는 모든 측정에 의해 수행됩니다. 그러나 이번에는 model.parse이 호출되지 않습니다. 따라서 새 필드를 사용할 수 없습니다.

model.parse는 아약스 "성공"더

, 백본 done 핸들러가 responses.text에서 올바른 JSON을 보여줍니다에도 불구하고 호출되지 않습니다 이유에서 힌트

// Callback for when everything is done 
     function done(status, nativeStatusText, responses, headers) { 
      var isSuccess, success, error, response, modified, 
       statusText = nativeStatusText; 

비슷한 문제를 직면 : 설정된 모델 ID로 가져오고, 모델에서 가져 오기는 배열 {{}이 아닌 객체 {}에 json을 반환해야합니다. 모범 사례 없음

답변

0

Backbone.js 소스 코드는 비교적 쉽게 이해할 수 있으며 백본에서 직접 이와 같은 문제를 디버깅 할 수 있습니다.

  1. 귀하의 제공 성공 콜백은 나중에 사용하기 위해 저장하고 새로운 성공 콜백으로 대체됩니다 : 당신이 model.fetch 다음과 같은 기본적으로 호출 할 때

    은 무엇 발생합니다.

  2. model.sync은 현재 모델과 제공된 옵션으로 호출됩니다 (단, 옵션에 다른 성공 콜백이 있음을 제외하고는).
  3. model.sync은 결국 success 콜백을 호출합니다.
  4. 성공 콜백은 model.parse으로 전화를 겁니다 (이것은 뭔가 잘못 될 수 있음).
  5. model.parse의 결과는 모델 특성을 업데이트하는 데 사용됩니다.
  6. 원래 성공 콜백이 호출되었습니다.

model.fetch 호출에 중단 점을 설정하고 Backbone 소스로 내림으로써 무엇이 잘못되었는지 알아낼 수 있어야합니다. 디버깅 중 확인해야 할 사항은 다음과 같습니다.

  • model.parse은 예상되는 기능입니까?
  • model 예상되는 개체입니까?

이 방법이 도움이되지 않는다면 문제를 재현하는 관련이없는 코드를 제거하여 작은 코드 예제를 만들어보십시오. 이렇게하면 어떤 점에서 잘못되었는지 파악할 수 있어야합니다.

여전히 작동하지 않는다면 작은 코드 예제로 JSFiddle을 만들고 http://www.mockable.io/으로 모의 백엔드를 만들고 여기에 다시 게시하십시오.