RESTAdapter内置了string
,number
,boolean
和date
的属性类型。有关系可以链接另一个模型来表示一些复杂的数据。
要表示array
,我需要使用转换或更改API,如下所示:
["ember.js", "angular.js", "embergular.js"]
为:
[
{
"id": 1,
"ember.js"
},
{
"id": 2,
"angular.js"
},
{
"id": 3,
"embergular.js"
}
]
哪个有点矫枉过正...... 为什么没有像array
和object
这样的内置类型?
答案 0 :(得分:3)
IMO主要原因是没有像数组或对象这样的属性类型主要是每个设计。
要表示数组,我需要使用转换或更改API,如下所示:
但要表示array
而不需要与模型建立关系,您可以定义一个不会触及您的数据的自定义转换(您已经提到过)。例如,要将数组用作模型属性,您可以执行以下操作:
DS.RESTAdapter.registerTransform('rawData', {
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
然后在你的模型中定义它:
App.MyModel = DS.Model.extend({
myArray: DS.attr('rawData')
});
这样,属性myArray
将是您的后端返回的内容,数组或对象等。
希望它有所帮助。