1

我正在尝试使用下两个模型的关联关系创建一个新记录。

App.Kid = DS.Model.extend({
    attribute1: DS.attr("string"),
    parent: DS.belongsTo(parent)
});

App.Parent = DS.Model.extend({
    attribute1: DS.attr("string"),
    kids: DS.hasMany(kid)
});

我的路线如下。我还在我的模板中使用了一个动作处理程序,以通过表单将我的模型保存为属性的新值。

App.KidRoute = Ember.Route.extend({
    model: function (id) {
        return this.store.createRecord('kid', {parent: id});
    },
    actions:{
        save: function(){
            this.get('currentModel').save();
        }
    }
});

但我收到了这个错误。

Assertion failed: You can only add a 'parent' record to this relationship 

我知道我做错了什么,但问题是它parent只是一个属性而不是一个belongTo关系。但我不想要这个。

先谢谢了!

4

1 回答 1

2

在该代码中:

this.store.createRecord('kid', {parent: id});

变量 id 可能是一些字符串、数字等。ember-data 需要模型实例,因此您需要加载它。

尝试使用以下内容:

App.KidRoute = Ember.Route.extend({
    model: function (id) {
        var route = this;
        return this.store.find('parent', id).then(function(parentModel) {
            return route.store.createRecord('kid', {parent: parentModel});
        });
    },
    actions:{
        save: function(){
            this.get('currentModel').save();
        }
    }
});
于 2013-10-31T13:20:15.120 回答