在Ember数据模型中使用数组的正确方法是什么? Tom Dale指出,ember已经嵌入了一个关系"在此comment中,但我无法找到任何有关此操作的文档或示例。
例如,我有Category
数据模型,因此具有名为conditionValues
的属性
App.Category = DS.Model.extend({
name: DS.attr('string'),
conditionValues: //this is an array
});
我想用我的服务器返回的数组填充此属性,如下所示。 Each category has many condition values
。怎么可能这样做呢?
[condition_values] => Array
(
[0] => Array
(
[DisplayName] => Brand New
)
[1] => Array
(
[DisplayName] => Like New
)
[2] => Array
(
[DisplayName] => Very Good
)
[3] => Array
(
[DisplayName] => Good
)
[4] => Array
(
[DisplayName] => Acceptable
)
)
答案 0 :(得分:4)
自Ember Data 1.0 beta及以上版本开始,此答案中的代码不再有效。
您可以通过两种方式处理:
第一种方法是定义一个名为App.ConditionValues
的模型,然后定义一个关系:
App.Category = DS.Model.extend({
//.. your attributes
conditionValues: DS.hasMany('App.ConditionValues')
});
第二种方式来创建自己的custom transform。
DS.RESTAdapter.registerTransform('array', {
serialize: function(value) {
if (Em.typeOf(value) === 'array') {
return value;
} else {
return [];
}
},
deserialize: function(value) {
return value;
}
});
然后在你的模型中:
App.Category = DS.Model.extend({
//.. your attributes
conditionValues: DS.attr('array')
});