2013-05-31 1 views
4

컬렉션의 여러 레이어를 저장하기 위해 백본을 가져 오는 데 몇 가지 문제가 있습니다. 나는 다음과 같은 모델을 가지고있다 :backbone.js를 사용하여 모델 내에 중첩 된 컬렉션 저장

var Question = Backbone.Model.extend({ 
     urlRoot: "/question" 
    }); 

    var QuestionList = Backbone.Collection.extend({ 
     model: Question, 
     url: "/question", 
     parse: function(response) { 
      return response.objects; 
     } 
    }); 

    var QuestionBank = Backbone.Model.extend({ 
     urlRoot: "/questionbank" 
    }); 

    var QuestionBankList = Backbone.Collection.extend({ 
     model:QuestionBank, 
     url: "/questionbank", 
     parse: function(response) { 
      return response.objects; 
     } 
    }); 

    var Answer = Backbone.Model.extend({ 
     urlRoot: "/answer" 
    }) 

    var AnswerList = Backbone.Collection.extend({ 
     model: Answer, 
     url: "/answer", 
     parse: function(response) { 
      return response.objects; 
     } 
    }); 

많은 질문이 있고 질문에 많은 답이있다. 내 모델이 정확 수집하지만 수집의 두 번째 수준은 포함되지 않습니다 발송 된 JSON (답변) 저장할 때 : [] : 특히

{"active_question_bank": true, "id": 
"51a8c5d72ace7a458fd0d000", "question_bank_name": "New Q", "questions": 
[{"active_question": true, "answers": [], "difficulty": null, 
"id": "51a8d1be2ace7a458fd0d008", "question": "What is your favorite Color?", 
"question_is_and_type": false, "question_type": 1, "resource_uri": 
"/question/51a8d1be2ace7a458fd0d008", "tags": [""]}], "resource_uri": 
"/questionbank/51a8c5d72ace7a458fd0d000"} 

이 빈 "답변"을 보냅니다 때마다. 저는 백본에 비교적 익숙하지 않습니다, 그래서 이것은 아마도 불가능한 작업이지만 개념은 상당히 사소한 것처럼 보입니다.

답변

4

다음 패턴으로 모델과 컬렉션을 정의한 다음 JSON이 서버로 전송되는지 확인하십시오.

var Answer = Backbone.Model.extend({ 
    urlRoot: "/answer", 
}); 

var AnswerCollection = Backbone.Collection.extend({ 
    model: Answer, 
    urlRoot: "/answer", 
}); 

// a question can contain many answers which can be accessed via AnswerList 
var Question = Backbone.Model.extend({ 
    urlRoot: "/question", 
    defaults: { 
     AnswerList: new AnswerCollection(), 
    }, 
    parse: function(response) { 
     response.AnswerList= new AnswerCollection(response.AnswerList); 
     return response; 
    } 
}); 

var QuestionCollection = Backbone.Collection.extend({ 
    model: Question, 
    url: "/question", 
}); 

// question-bank contains many questions which can be accessed via QuestionList 
var QuestionBank = Backbone.Model.extend({ 
    urlRoot: "/questionbank", 
    defaults: { 
     QuestionList: new QuestionCollection(), 
    }, 
    parse: function(response) { 
     response.QuestionList = new QuestionCollection(response.QuestionList); 
     return response; 
    } 
}); 
+0

주요 문제는 백본에서가 아니라 Tastypie를 사용하는 것이지만 실제로 도움이되었습니다. 이것이 실제로 작동하기 때문에 나는 이것을 답으로 표시 할 것입니다. – JazzyWhit

관련 문제