Ember数据模型 - 定义更改

时间:2014-02-26 17:44:11

标签: ember.js ember-data

我已经在一个有效的应用程序中使用了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;上述变化是我迄今为止所做的唯一变化。

1 个答案:

答案 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}