如何在 Ember 中使用 belongsTo

Posted

技术标签:

【中文标题】如何在 Ember 中使用 belongsTo【英文标题】:How to use belongsTo in Ember 【发布时间】:2014-04-07 12:06:08 【问题描述】:

我有这些模型:

Gmcontrolpanel.Offer = DS.Model.extend(
  idShop: DS.attr('number'),
  name: DS.attr('string'),
  duration: DS.attr('string'),
  optionDuration: DS.attr('number'),

  products: DS.hasMany('product', embedded: 'always')
);

Gmcontrolpanel.Product = DS.Model.extend(
  name: DS.attr('string'),
  description: DS.attr('string'),

  offer: DS.belongsTo('offer')
);

现在我已经了解了 hasMany 的工作原理;但是对于belongsTo?它应该如何成为产品的服务器答案,让 Ember-data 知道如何获得父报价?

【问题讨论】:

【参考方案1】:

这取决于您的要求。

在您的 Offer 请求中,您需要包含与其相关的产品的 ID 列表,并且您需要对 Products 执行相反的操作,如下所示:


   "offers": [
         
             'id':1,
             'idShip':1,
             'name':'Offer 1',
             'duration':'3:00',
             'products':[1,2,3,4,5]
         
   ]



       "products": [
             
                 'id':1,
                 'name':'Product 1',
                 'offer':1
             
       ]
    

您可以从hasMany 中删除embedded: 'always'。 Ember 将自动启动对包含的每个 id 的请求。或者,您可以通过将所有产品或优惠包含在一个请求中来旁加载请求中的产品或优惠,如下所示;


   "offers": [
         
             'id':1,
             'idShip':1,
             'name':'Offer 1',
             'duration':'3:00',
             'products':[1,2,3,4,5]
         
   ],
   "products": [
        
             'id':1,
             'name':'Product 1',
             'offer':1
        
   ]

【讨论】:

以上是关于如何在 Ember 中使用 belongsTo的主要内容,如果未能解决你的问题,请参考以下文章

ember-data-url-templates - 如何在Ember 3中使用快照API

Ember 数据:为啥 hasMany 和 belongsTo

Ember.Select 使用 belongsTo Ember 数据模型属性的默认选择值?

Ember Mirage 模型:对于多个 hasMany 和 belongsTo

具有嵌套 hasMany 或 belongsTo 关系的 Ember 模型

Ember Docs - Readonly嵌套数据