0

나는 음식을 통해 매일 영양소 소비를 추적하고 깔끔한 타임 라인으로 선물하는이 웹 앱을 가지고 있습니다.JSON을 기반으로하는 백본 모델 및 컬렉션의 구조

필자는 Backbone을 처음 사용하고 있으며 모델과 컬렉션을 구조화하려고합니다. 다음 JSON을 백본 모델/컬렉션으로 모델링하는 방법은 무엇입니까?

음식 컬렉션 내면 모델입니까? 당신은 JSON이있는 경우

{ 
     response: [ 
     { // a random day 
      date: '1/1/2011', 
      totalCalories: 1000, 
      totalCarbs: 100, 
      totalProtein: 60, 
      totalFats: 30, 
      foods: [ 
      { // a food consumed in this day 
       datetime: '1/1/2011 17:30', 
       calories: 500, 
       proteins: 30, 
       carbs: 50, 
       fats: 15, 
       img: 'link_to_img' 
      }, 
      { 
       datetime: '1/1/2011 19:30', 
       calories: 500, 
       proteins: 30, 
       carbs: 50, 
       fats: 15, 
       img: 'link_to_img' 
      } 
      ] 
     }, 
     { // another day 
      date: '3/1/2011', 
      totalCalories: 1000, 
      totalCarbs: 100, 
      totalProtein: 60, 
      totalFats: 30, 
      foods: [ 
      { 
       datetime: '3/1/2011 17:30', 
       calories: 500, 
       proteins: 30, 
       carbs: 50, 
       fats: 15, 
       img: 'link_to_img' 
      }, 
      { 
       datetime: '3/1/2011 19:30', 
       calories: 500, 
       proteins: 30, 
       carbs: 50, 
       fats: 15, 
       img: 'link_to_img' 
      } 
      ] 
     } 
     ] 
} 
+0

DaysCollection> 모델> FoodsArray/FoodsCollection. 식품을 배열 또는 백본 컬렉션으로 사용해야하는지 여부는 응용 프로그램에 달려 있습니다. 백본 관련 작업을 수행 할 필요가 없다면 컬렉션 일 필요는 없습니다. 백본은 중첩 된 컬렉션 또는 모델을 지원하지 않습니다. 따라서 백본 객체를 중첩하면 이벤트 전파와 같은 작업을 처리해야합니다. 단순화를 위해 식품을 배열로 남겨 두겠다. –

+0

[모델과 컬렉션을 중첩하는 다른 방법] (https://stackoverflow.com/a/40823148/1218980), [중첩 모델 특성 다루기]에 대한 완전한 답을 썼다. (https://stackoverflow.com/a/41701463/1218980) 및 [중첩 모델 및 컬렉션의 이벤트 버블 링] (https://stackoverflow.com/a/40532592/1218980)을 참조하십시오. –

답변

0

당신이 수집 및 모델을 만들 수 있습니다

Creating model

var myModel = Backbone.Model.extend({}); 

Creating collection

당신의 예에서
var myCollection = Backbone.Collection.extend({ 
    model: myModel 
}); 

var ourCollection = new myCollection(yourJSON); 

, 나는 중첩이 컬렉션 (1 생성됩니다 모델) CollectionOfDays ->하나 개 식품 및 식품 컬렉션에 다른 모델을 만들고 음식을 덮어 쓸 수 있습니다, 그 후

date: '1/1/2011', 
totalCalories: 1000, 
totalCarbs: 100, 
totalProtein: 60, 
totalFats: 30, 
foods: [Array] -food consumed in day 

: - 174,컬렉션

var randomDay = Backbone.Model.extend({}); 
var randomDayCollection = Backbone.Collection.extend({ 
    model: randomDay 
}); 

var collection = new randomDayCollection(yourJSON); 

모델 (모델 내부)>CollectionOfFoods는 속성이 있습니다.