2012-01-09 10 views
10

Sono relativly nuovo a Backbone.jsCome costruire una collezione/Modello da nidificato JSON con Backbone.js

Ho un JSON come l'immagine mostra! Ho visto alcune risposte in relazione a Backbone-relazionale, ma ancora non capisco il punto!

Come posso convertire questo JSON in Backbone.js Collezioni/Modelli ??

Aggiornamento con un codice ma non funziona come previsto! non riesco a vedere un modello quando lo faccio:

mia struttura è:

[0]: è una raccolta di modelli

[chiavi] + ... + [Resto]: sono collezione di modelli

(clefs) => [0] + ... + [9]: sono modelli (titolo contiene una stringa, percorso troppo)

Grazie mille !!

EDIT (10.01.12):

mia soluzione:

window.initModel = Backbone.Model.extend({ 
    defaults: { 
    "title": "", 
    "path": "" 
    } 
}); 
window.CustomCollection = Backbone.Collection.extend({ 
    model: initModel 
}); 
window.Init = Backbone.Model.extend({ 
    url : function(){ 
    return "/api/data.json"  
    }, 

    parse: function(response) { 

    clefs = new CustomCollection(); 
    clefs.add(response.clefs);   
    this.set({clefs: clefs}); 

    ..... 

    rests = new CustomCollection(); 
    rests.add(response.rests);   
    this.set({rests: rests}); 
} 
}); 

this mi ha aiutato troppo!

Nested Array

+0

Stai cercando di avere modelli Backbone annidati/collezioni così (questo non è 100% necessario, in base alle tue esigenze). Potresti riuscire a cavartela con un solo modello Backbone, con un singolo oggetto. –

+0

@trouble Dopo aver provato con Backbone-Relational, ho seguito la soluzione (sovrascrivere l'analisi). Con Backbone-Relational alcuni eventi "aggiungi" ecc non sparavano e causavano problemi. Grazie per la pubblicazione! – greenimpala

risposta

17

sono al lavoro, quindi non posso dare una risposta pienamente codificata, ma il succo è, è possibile effettuare le seguenti operazioni nei tuoi modelli di livello superiore per ottenere una gerarchia del modello nidificato:

var AmericasNextTopModel = Backbone.Models.extend({ 
    initialize: function(){ 

     this.set({ 
      clefs: new ClefCollection(this.get('clefs')), 
      accidentals: new AccidentalCollection(this.get('accidentals')), 
      notes: new NoteCollection(this.get('notes')), 
      rests: new RestCollection(this.get('rests')) 
     }); 
    } 
}); 

non faccio uso di spina dorsale-relazionale quindi non si può dare una risposta in merito a tale.

Stai creando un visualizzatore/editor di spartiti online? : D Cool Mi piacerebbe vederlo quando hai finito.

+0

Sì, sì: D !! ti dirò quando ho finito! faccio un aggiornamento nel mio post sulla tua risposta! – trouble

0

Il metodo reset (see 'reset') permette di passare una matrice JSON per una collezione. Questo è l'equivalente di un metodo PUT, che sostituisce la raccolta specificata con l'hash JSON.

È inoltre possibile utilizzare il metodo add da aggiungere a una raccolta esistente o passare l'hash JSON nel costruttore durante la creazione di una nuova raccolta.

Dovrete fare un po 'pulizia di base fino dell'array per farlo in un formato appropriato, quindi convert it to JSON

+1

eh! Vedo i tuoi punti! ma questo davvero non mi aiuta a costruire la vera Collezione di chiavi, ... il riposo no? Ho davvero bisogno di averlo così come lo descrivo io! correggimi se sbagli! Grazie! – trouble

+0

Il mio male! l'immagine qui sopra è un JSON! scusa – trouble

0

Sto usando PHP per prendere un feed come JSON poiché si trova su un dominio diverso. I salvare tali risultati a una variabile JS, e poi ho avuto successo con questo per ottenere nella mia collezione Backbone ...

var feedCollection = new Backbone.Collection(); 
feedCollection.set(myFeedJSON.nestedObject.nestedArrayIWant); 
Problemi correlati