【发布时间】: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