我正在使用Ember 1.4和EmberData beta7。我的Ember-Data模型如下所示:
/** Ember Data Models **/
var attr = DS.attr;
var belongsTo = DS.belongsTo;
var hasMany = DS.hasMany;
App.StratLeg = DS.Model.extend({
legName: attr(),
quantity: attr(),
strat: belongsTo('strat')
});
App.Strat = DS.Model.extend({
stratName: attr(),
stratLegs: hasMany('stratLeg', {async:true})
});
我在StratsController中创建了一条父记录:
var nwParent =
{id: "parentId",
stratName: "pName",
};
var newStrat = this.store.createRecord ('strat', nwParent);
然后转换到StratsStratController以获取此新创建的记录并执行以下操作以创建2个子记录并将这些记录附加到父记录:
var nwChild1 =
{
id: "childId1",
legName: "cName1",
quantity: '1',
strat: "parentId"
};
var nwChild2 =
{
id: "childId2",
legName: "cName2",
quantity: '5',
strat: "parentId"
};
var newLeg1 = this.store.createRecord ('stratLeg', nwChild1);
var newLeg2 = this.store.createRecord ('stratLeg', nwChild2);
var thisStratLegs = this.get('stratLegs');
thisStratLegs.pushObject(newLeg1);
thisStratLegs.pushObject(newLeg2);
如果我执行下面显示的'save'语句,Ember只向父记录发送一条消息给服务器(但发送的父记录不包含'strat'属性); Ember不会自动发送附加的儿童记录。
this.get('model').save();
将新的父级和新子级持久保存到服务器的正确方法是什么?
答案 0 :(得分:0)
我认为“默认”方式是手动为每个孩子调用save()
。
然而,这听起来像是embedded records的一个很好的用例(假设您正在使用rails后端)。您的服务器将在stratLeg
模型的JSON内的数组中返回strat
模型JSON。
如果你不能做嵌入式记录,最后的办法就是尝试用this之类的方式对孩子的save()
电话进行批处理。