0

J'ai cette application web qui suit la consommation quotidienne de nutriments à travers les aliments et les présente dans un calendrier soigné. Je suis nouveau à Backbone et j'essaye de structurer mes modèles et collections. Comment puis-je modéliser le JSON suivant dans Backbone Models/Collections?Structure des modèles backbone et des collections basées sur JSON

Est-ce que ce devrait être un aliments collection à l'intérieur d'un jour modèle?

{ 
     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> Modèle> FoodsArray/FoodsCollection. Que les aliments devraient être une collection de matrice ou de backbone est jusqu'à votre application. Si vous n'avez pas besoin d'effectuer d'opérations liées au backbone, il ne doit pas nécessairement s'agir d'une collection. Notez que backbone ne prend pas en charge les collections ou modèles imbriqués. Vous devez donc gérer des événements comme la propagation d'événements si vous imbriquez des objets de backbone. Je vais laisser les aliments comme un tableau pour la simplicité –

+0

J'ai écrit des réponses complètes sur [les différentes façons d'imbriquer des modèles et des collections] (https://stackoverflow.com/a/40823148/1218980), [traitant des attributs de modèle imbriqués] (https://stackoverflow.com/a/41701463/1218980), et [événements bouillonnants de modèles imbriqués et de collections] (https://stackoverflow.com/a/40532592/1218980). –

Répondre

0

Si vous avez JSON vous pouvez créer la collection et le modèle

Creating model

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

Creating collection

var myCollection = Backbone.Collection.extend({ 
    model: myModel 
}); 

var ourCollection = new myCollection(yourJSON); 

Dans votre exemple, je vais créer 2 collections (1 nichés modèle) CollectionOfDays ->ModelOfDay ->CollectionOfFoods (à l'intérieur du modèle)

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

var collection = new randomDayCollection(yourJSON); 
modèle

dans la collection ont des attributs:

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

Après cela, vous pouvez créer un autre modèle à un aliment et collection aliments et écraser vos aliments.