【问题标题】:Ember AppKit and embedded object using ember dataEmber AppKit 和使用 ember 数据的嵌入对象
【发布时间】:2014-07-30 18:31:11
【问题描述】:

我正在尝试使用 Ember AppKit 和 ES6 语法创建一个具有嵌入数据的模型,但我有点困惑。

我发现这篇文章解释了将数据嵌入模型的方法: https://github.com/emberjs/data/blob/master/TRANSITION.md#rest-adapter-and-serializer-configuration

但我不知道如何将其应用于我的范围。我应该将“地图”添加到适配器中以指定我的属性将被嵌入,但我不知道如何。

这就是我所拥有的:

适配器/item.js

export default DS.RESTAdapter.extend({
   namespace: 'path/to/api/json'
});

这里怎么添加地图??

models/item.js

var attr = DS.attr,
    belongsTo = DS.belongsTo;

export default DS.Model.extend({
    name: attr('string')
    width: belongsTo('valueUnit'),
    height: belongsTo('valueUnit'),
    weight: belongsTo('valueUnit')
});

我认为这里应该是这样的:

export default DS.Model.extend({
    name: attr('string')
    width: belongsTo('valueUnit', {embedded: 'always'}),
    height: belongsTo('valueUnit', {embedded: 'always'}),
    weight: belongsTo('valueUnit', {embedded: 'always'})
});

models/value-unit.js

var attr = DS.attr;

export default DS.Model.extend({
    value: attr('number')
    unit: attr('string')
});

这是我从服务器得到的:

{
  "items": [
    {
      "id": "123456789",
      "width": {
        "value": 150,
        "unit": "m"
      },
      "height": {
        "value": 5.3,
        "unit": "ft"
      },
      "weight": {
        "value": 12,
        "unit": "lb"
      }
    }
  ]
}

谢谢

【问题讨论】:

  • 也许这只是一个示例问题,但没有必要将 valueUnit 视为模型。这将带来很多开销和复杂性。它不是一个模型——它只是一个复杂的数据类型。如果您想对其进行更多控制或帮助往返,您可以定义一个转换,以便将其定义为width: DS.attr('valueUnit')

标签: javascript ember.js ember-data ember-app-kit


【解决方案1】:

您必须为项目模型编写序列化程序。这里是guide关于如何编写序列化程序。

(在你的例子中,你是从 items 数组中提取数据。所以实现 extractArray 函数。)

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多