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?
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
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