我已经在一个有效的应用程序中使用了EmberModel一段时间了,现在又想回到使用EmberData。我从Ember网站上的“模型指南”文档中注意到,在EmberData模型中定义hasMany关系的正确方法已经改变。在早期版本的EmberData中,我定义了这样的模型:
App.StratItem = DS.Model.extend({
id: DS.attr('string),
name: DS.attr('string'),
quantity: DS.attr('number'),
type: DS.attr('string'),
strategy: DS.belongsTo('strat')
});
App.Strat = DS.Model.extend({
id: DS.attr('string'),
stratName: DS.attr('string'),
sDate: DS.attr('number'),
eDate: DS.attr('number'),
stratItems: DS.hasMany('stratItem',{async:true})
});
如果我正确解释当前的文档,现在应该是相同模型的正确定义:
App.StratItem = DS.Model.extend({
id: DS.belongsTo('strat')
name: DS.belongsTo('strat')
quantity: DS.belongsTo('strat')
type: DS.belongsTo('strat')
});
App.Strat = DS.Model.extend({
id: DS.attr(),
stratName: DS.attr(),
sDate: DS.attr(),
eDate: DS.attr(),
stratItems: DS.hasMany('stratItem')
});
以下是我的问题:
1)我对文件的解释是否正确?
2)如果是,那么为“StratItem”中的每个变量指定“belongsTo”的目的是什么,而我已经在'Strat'中指定整个'StratItem'模型(即所有变量)都是'斯特拉特'?
3){async:true}仍然是必要的吗?
我收到来自Ember的“加载路由时出错”错误消息,该错误信息曾用于旧版本的Ember(版本1.0 rc)和Ember Data;上述变化是我迄今为止所做的唯一变化。
答案 0 :(得分:0)
不确定您在哪里感到困惑,但您不应该为属性定义belongsTo
关系:
App.StratItem = DS.Model.extend({
name: DS.attr(),
quantity: DS.attr(),
type: DS.attr(),
strategy: DS.belongsTo('strat')
});
App.Strat = DS.Model.extend({
id: DS.attr(),
stratName: DS.attr(),
sDate: DS.attr(),
eDate: DS.attr(),
stratItems: DS.hasMany('stratItem')
});
id: DS.attr(),
是不必要的。 Ember数据会自动执行此操作。
{async:true}
。