Ember createRecord没有创建关系

时间:2014-01-04 21:48:45

标签: javascript django ember.js ember-data django-rest-framework

我正在使用最新的余烬和余烬数据。我的设置包括django,django-rest-framework。我的适配器是ember-data-django-rest-adapter。

我有这些模型

App.Game = DS.Model.extend({
    name:           DS.attr('string'),
    thumbnail:      DS.attr('string'),
    images:         DS.hasMany('image', {async: true}),
    spritesheets:   DS.hasMany('spritesheet', {async: true})
});

App.Image = DS.Model.extend({
    name:           DS.attr('string'),
    absolute_url:   DS.attr('string'),
    game:           DS.belongsTo('game', {async: true}),
    spritesheet:    DS.belongsTo('spritesheet', {async: true})
});

App.Spritesheet = DS.Model.extend({
    name:           DS.attr('string'),
    columns:        DS.attr('number'),
    rows:           DS.attr('number'),
    cell_width:     DS.attr('number'),
    cell_height:    DS.attr('number'),
    game:           DS.belongsTo('game', {async: true}),
    image:          DS.belongsTo('image', {async: true}),
    animations:     DS.hasMany('animation', {async: true})
});

App.Animation = DS.Model.extend({
    name:           DS.attr('string'),
    spritesheet:    DS.belongsTo('spritesheet', {async: true}),
});

这条路线:

App.AnimationsRoute = Ember.Route.extend({
    model: function(params){
        var store = this.store;
        var image = this.modelFor('image');
        var game = this.modelFor('game');
        var spritesheet = image.get('spritesheet');
        console.log(game)
        if (spritesheet === null) {
            spritesheet = store.createRecord('spritesheet',{
                name: 'test',
                game: game,
                image: image
            });
            console.log(spritesheet.toJSON())

        }
        return spritesheet.get('animations');
    }
});

显然有更多的代码,但这是导致我这个问题的一点。剩下的工作正常。游戏模型正如图像一样正常加载。

我的问题是'形象'和'游戏'属性设置为'未定义'。 这是控制台中的json输出:

Object {name: "test", columns: null, rows: null, cell_width: null, cell_height: null…}
{
    cell_height: null,
    cell_width: null,
    columns: null,
    game: undefined,
    image: undefined,
    name: "test",
    rows: null
}

我已经疯了很久了。有人提出任何线索吗? 此外,我知道我可能不应该在路线上进行创作,但我只是想让它现在正常工作

1 个答案:

答案 0 :(得分:1)

使用belongsTo async打开了2个问题,它目前不允许分配。

https://github.com/emberjs/data/pull/1535

https://github.com/emberjs/data/issues/1542