2012-09-24 14 views
6

Estoy tratando de entender los modelos Ember Data y tengo un problema al intentar asignar una colección de objetos encontrados usando store.findAll() a una relación hasMany de un modelo de datos ember.Asignación a una relación hasMany en Ember Data

Tengo dos modelos definidos:

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

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

si le asigno la relación como parte de 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 }); 

continuación, se produce un error (en silencio) como oneBranch.get('lotsOfLeaves.length') es 0.

Del mismo modo, se produce un error en silencio si le asigno la relación después de la asociación:

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

entiendo que puedo usar pushObject() en oneBranch.get('lotsOfLeaves') añadir cada hoja individual, pero es que la única manera?

Respuesta

4

La clase MutableArray también define un método pushObjects() que debería poder usar para agregar todos al mismo tiempo.

La documentación está aquí: http://docs.emberjs.com/symbols/Ember.MutableArray.html#method=pushObjects

+0

Ah, por supuesto. Gracias @MikeHickman. Sin embargo, esperaba aprovechar el enlace que se obtiene al usar algo como 'var autoupdate = App.store.findAll (...)' donde cualquier operación CRUD se refleja automáticamente. Entonces en este caso 'oneBranch.get ('lotsOfLeaves')' siempre contendría todos los objetos 'App.Leaf' en el sistema. Parece que tendré que gestionarlo manualmente. – EdgifyJP

+0

Además, sería bueno si el intento de asignar algo a la asociación fallara con un mensaje de algún tipo. Pero con suerte eso mejorará con el tiempo. – EdgifyJP

Cuestiones relacionadas