2012-09-24 9 views
6

Ich versuche, mich mit den Ember-Datenmodellen vertraut zu machen und ein Problem beim Zuweisen einer Objektgruppe mit store.findAll() zu einer hasMany Beziehung eines Glutendatenmodells zu bekommen.Zuordnung zu einer hasMany-Beziehung in Ember-Daten

I haben zwei Modelle definiert:

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

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

Wenn ich die Beziehung als Teil 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 }); 

zuweisen dann versagt es (stumm) als oneBranch.get('lotsOfLeaves.length')0 ist.

Ebenso ist es nicht still, wenn ich die Beziehung nach der Vereinigung zu:

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

Ich verstehe, dass ich pushObject() auf oneBranch.get('lotsOfLeaves') verwenden können, jedes Blatt einzeln hinzufügen, aber ist, dass der einzige Weg?

Antwort

4

Die MutableArray-Klasse definiert auch eine pushObjects() -Methode, die Sie verwenden können, um alle gleichzeitig hinzuzufügen.

Dokumentation ist hier: http://docs.emberjs.com/symbols/Ember.MutableArray.html#method=pushObjects

+0

Ah, natürlich. Danke @MikeHickman. Obwohl ich hoffte, die Bindung zu nutzen, die Sie bekommen, wenn Sie etwas wie 'var autoupdate = App.store.findAll (...)' verwenden, wurden alle CRUD-Operationen automatisch wiedergegeben. In diesem Fall würde 'oneBranch.get ('lotsOfLeaves')' immer alle 'App.Leaf'-Objekte im System enthalten. Sieht so aus, als müsste ich das manuell verwalten. – EdgifyJP

+0

Auch wäre schön, wenn der Versuch, etwas zu der Assoziation zuzuordnen, mit einer Nachricht irgendeiner Art fehlgeschlagen ist. Aber hoffentlich wird das im Laufe der Zeit verbessert werden. – EdgifyJP

Verwandte Themen