2012-09-24 8 views
6

Sto cercando di capire quali sono i modelli di Ember Data e ho riscontrato un problema nel tentativo di assegnare una raccolta di oggetti trovati utilizzando store.findAll() a una relazione hasMany di un modello di dati di bordo.Assegnazione ad una relazione MOLTO in Dati di bordo

Ho due modelli definiti:

App.Leaf = DS.Model.extend({ 
    text: DS.attr('string'), 
    branch: DS.belongsTo('App.Branch') 
}); 

App.Branch = DS.Model.extend({ 
    lotsOfLeaves: DS.hasMany('App.Leaf') 
}); 

Se assegno relazione nell'ambito della createRecord()

App.store.loadMany(App.Leaf,[ 
     { id: 1, text: "Hello, I'm leaf 1", branch_id: 1 }, 
     { id: 2, text: "Hello, I'm leaf 2", branch_id: 1 } 
    ]); 
    var allLeaves = App.store.findAll(App.Leaf); 
    var oneBranch = App.Branch.createRecord({ id: 1, lotsOfLeaves: allLeaves }); 

quindi viene a mancare (silenzio) come oneBranch.get('lotsOfLeaves.length') è 0.

Allo stesso modo, non riesce in silenzio se assegno il rapporto dopo l'associazione:

var all = App.store.findAll(App.Leaf); 
    oneBranch.set('lotsOfLeaves', all); 

ho capito che posso usare pushObject() su oneBranch.get('lotsOfLeaves') aggiungere singolarmente ogni foglia, ma è che l'unico modo?

risposta

4

La classe MutableArray definisce anche un metodo pushObjects() che dovrebbe essere in grado di utilizzare per aggiungerli tutti in una volta.

documentazione è qui: http://docs.emberjs.com/symbols/Ember.MutableArray.html#method=pushObjects

+0

Ah, naturalmente. Grazie @ MikeHickman. Anche se, speravo di sfruttare l'associazione ottenuta usando qualcosa come "var autoupdate = App.store.findAll (...)" se le operazioni CRUD sono state automaticamente riflesse. Quindi in questo caso 'oneBranch.get ('lotsOfLeaves')' conterrà sempre tutti gli oggetti 'App.Leaf' nel sistema. Sembra che dovrò gestirlo manualmente. – EdgifyJP

+0

Inoltre, sarebbe bello se il tentativo di assegnare qualcosa all'associazione fallisse con un messaggio di qualche tipo. Ma si spera che sarà migliorato nel tempo. – EdgifyJP

Problemi correlati