0

필자는 어딘가에서 내 백본 컬렉션이 모델을 올바르게 저장하지 못한다고 생각합니다. 또한 페이지 넘김 컬렉션을 사용하기 위해 backbone-pageable을 사용하고 있습니다. 내 백본 앱은 https://github.com/alessioalex/ClientManager과 일부 백본 자습서를 기반으로합니다.백본 컬렉션의 모델 - 개체가 잘못된 구조입니까?

기본적으로, 나는 그것을 이해, 백본 컬렉션은 모델 즉 속성이 있어야합니다

Object 
    models: Array 
    0: Object 
     model 
     model, etc 

그러나 광산은 구조를 갖고있는 것 같다 : 내 템플릿에, 그래서 이렇게

Object 
    models: Array 
    0: Object 
     attributes: Object 
     tasks: Array (from my server JSON response) 
     total_match, etc (other variables for pagination) 

를 I 항상 작업이 아닌 각각의 작업 [0]을 사용해야합니다 .each

이는 모델을 컬렉션에 추가 할 때 작업의 모델 배열에 추가되지 않는다는 것을 의미합니다. b

Object 
    models: Array 
    0: Object 
     attributes: Object 
     tasks: Array (from my server JSON response) 
     total_match, etc (other variables for pagination) 
    1: Object 
     (new model attributes) 

이 다음 내 템플릿 코드는, 작업을 검색 하시나요 [0]을 선택하지 않는다는 것을 의미한다 : 유타 대신 백본은이되도록, 모델에서 다른 배열을 만들었습니다. 또한 내 컬렉션의 경우 collection.get (id)을 사용할 수 없다는 것을 의미합니다. 올바른 ID를 사용하고 모델에 대해 지정된 IDAttribute를 사용하는 경우에도 아무 것도 반환하지 않습니다.

나는 약간 엉망이되었다.

+1

REST 엔드 포인트에서 배열을 반환합니까? – thibauts

+0

안녕하세요, JSON 응답 : { "작업": [{ "ID": "88", ... "}],"total_pages ": 1,"total_match ": 10,"total_tasks ": 14} – RTolton

답변

0

서버가 tasks 배열을 JSON 응답에 중첩 반환하는 것 같습니다. Backbone이 JSON을 올바르게 구문 분석하는 방법을 알기 위해서는 parse() 메소드를 덮어 쓰고 모델의 소스로 tasks 어레이를 사용하도록 알려야합니다.

var MyModel = Backbone.Model.extend({});  
var MyCollection = Backbone.Collection.extend({ 
     model: MyModel, 
     parse: function(response) { 
      //tell Backbone to turn each element in 'tasks' into an instance of MyModel 
      return response.tasks; 
     } 
}); 
+0

이것은 parseRecords : parseRecords : function (resp) { return resp.tasks; } 감사합니다!하지만 다른 JSON 속성에 접근 할 수있는 방법이 있습니다. 배열 밖에서 구문 분석을 선택 했습니까? – RTolton

+0

내 자신의 질문에 대한 답변을 관리합니다. JSON을 템플릿에 전달할 때 백본 페이지 가능 상태 객체도 보낼 수 있습니다.'tmpl = that.template ({projects : projects_json, state : projects.state});' – RTolton

관련 문제