嵌套模型[ember-1.0.0-rc.1 + ember.data-11]

时间:2013-03-20 10:15:49

标签: ember.js ember-data

问题1 我在ember-1.0.0-rc.1 + ember.data-11中创建嵌套模型的概念有什么问题?

问题2 使用var line = App.Line.find()我应该得到Line。如何将Andon或Shift作为对象嵌套在一行中?或者只有Andon的颜色?

这是我的jsFiddle

App.Line = DS.Model.extend({
    name: DS.attr('string'),
    shifts: DS.hasMany('App.Shift'),
});

App.Shift = DS.Model.extend({
    name: DS.attr('string'),    
    // shift 1 <-> 1 shifts
    line: DS.belongsTo('App.Line'),
    //  one-to-one relationship between Shift and Andon
    andon: DS.belongsTo('App.Andon')
 });

 App.Andon = DS.Model.extend({
    //  one-to-one relationship between Shift and Andon 
    shift: DS.belongsTo('App.Shift')
 })

控制器

 App.LinesController = Ember.ArrayController.extend({
     content: [],
 });

 App.linesController = Ember.ArrayController.create({
    content: [],
    init: function(){

    var self = this;
    self.pushObject(

        App.Line.createRecord(
                        {
                        ...
                        shifts: [ 
                          App.Shift.createRecord(
                          {
                            andon:  App.Andon.createRecord({...})
                          }),
                          App.Shift.createRecord(
                          {
                            andon: App.Andon.createRecord({...})
                          }),

                        ]   
                    },
                   ],
                }
            ),      
        );  
    }, 
 });

非常感谢!

1 个答案:

答案 0 :(得分:0)

关于问题2:

我认为你需要为每个belongsTo添加一个外键,即Shift中的line_id和andon_id以及Andon中的shift_id,然后你需要创建一些可以嵌入/加载关联的序列化器。不幸的是,我只熟悉rails中的activeModel序列化程序,这可能不适用于你的情况,但也许this question答案中的例子可以帮助你。