2015-04-02 58 views
1

我有一个嵌套的模型,例如:如何在ember-data中有效指定嵌套关系?

var School = DS.Model.extend({ 
    classrooms: DS.hasMany('classroom', {async: true}) 
}); 

var Classroom = DS.Model.extend({ 
    students: DS.hasMany('student', {async: true}), 
    school: DS.belongsTo('school', {async: true}) 
}); 

var Student = DS.Model.extend({ 
    name: DS.attr('string'), 
    classroom: DS.belongsTo('classroom', {async: true}) 
}); 

我使用的火力作为后端,我理解它是明智的非规范化为了提高效率,架构。是否有明确指定为Student模型的关系

var Student = DS.Model.extend({ 
    school: DS.belongsTo('school', {async: true}); 
}); 

任何工具,尽管这是由每个Student属于Classroom每个Classroom属于School暗示?

回答

0

不需要你不需要提供嵌套的关系信息,除非可以直接从根对象访问模型(希望是有道理的)。

这样做的唯一“好处”是,在您的情况下,当加载school数据时,将加载student型号,而不是等待加载classroom数据。但是,这将提供一个不反映你意图的数据结构,所以我不会主张这样做。

0

我会用一个计算的属性或结合让你以后 - 像

school: Ember.computed.alias('classroom.school') 
schoolBinding: 'classroom.school' 

这不会是一个DS.belongsTo因为数据不会实际包含学校财产