【问题标题】:EmberData Model-Definition ChangesEmberData 模型定义更改
【发布时间】:2014-02-26 17:44:11
【问题描述】:

我在工作应用程序中使用 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”模型(即所有变量)都是'Strat'?

3) {async:true} 还需要吗?

我收到来自 Ember 的“加载路线时出错”错误消息,该错误消息用于处理旧版本的 Ember(版本 1.0 rc)和 Ember 数据;上述更改是我迄今为止所做的唯一更改。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    不确定你在哪里弄糊涂了,但你不应该为属性定义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} 仅在您不侧载相关数据时才需要。

    【讨论】:

    • 请查看 Ember Guide for 'Models' emberjs.com/guides/models/defining-models 中的“Explicit Inverses”部分,这似乎表明我需要在属性中指定“belongsTo” - 不是吗?
    • 只有当你有多个相同类型的belongsTo/hasManys 时。你各有一个。
    • 文档中的那部分真的让我很困惑。 App.Comment的文档属性中是否提到了onePost、twoPost、redPost和bluePost?
    • 它们是comment的附加关系。一个人为的例子是 child belongsTo motherfathermother 有许多孩子(反向设置明确为 mother
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2016-11-18
    • 2014-07-26
    相关资源
    最近更新 更多