0
我的客戶端API按以下格式返回JSON:Emberjs - 映射JSON建模領域
{
"Result": [
{
"member": {
"id": 1,
"name": "Mark Smith",
"email_address": "[email protected]",
"member_type": [
"Premium"
],
"privileges": [
"MEMBER"
]
},
"activites": {
"ActivityId": "15",
"ActivityName": "Tennie"
}
}
],
"ResultCount": 1
}
,我需要映射到我的灰燼應用模型:
App.Member = DS.Model.extend({
memberid: DS.attr('number'),
membername: DS.attr('string'),
memberemail: DS.attr('string'),
membertype: DS.attr('string'),
memberprivileges: DS.attr('number'),
activityID: DS.attr('number')
});
App.MemberSerializer = DS.RESTSerializer.extend({
extractArray: function(store, type, payload, id, requestType){
...
我試着實現一個序列化器來映射JSON和應用模型之間的字段,但不知道如何使用extractArray來做到這一點,因爲我找不到任何教程/示例如何這樣做,所以有人請給我提供如何做的例子所以基於我的客戶端JSON結構?
添置我根據詹姆斯做出回覆:
App.ArrayTransform = DS.Transform.extend({
deserialize: function (serialized) {
return (Ember.typeOf(serialized) == "array")
? serialized
: []
},
serialize: function (deserialized) {
var type = Ember.typeOf(deserialized)
if (type == 'array') {
return deserialized
} else if (type == 'string') {
return deserialized.split(',').map(function (item) {
return jQuery.trim(item)
});
} else {
return []
}
}
})
App.register("transform:array", DS.ArrayTransform);
App.Member = DS.Model.extend({
cont : DS.attr('array')
});
感謝James的回答,我根據您的回答更新了我的問題,並根據我的發現推薦了一些參考文獻註冊變換,但現在錯誤:TypeError:試圖註冊一個未知的工廠:'transform:array' ....如果我刪除變換註冊,我得到另一個錯誤:「加載路由時出錯:undefined」所以想什麼我在這裏做錯了,如何解決?感謝您的時間 – MChan
其實你不需要使用DS.Model('數組'),它應該工作正常使用DS.Model() – Jaime
我使用DS.attr('數組')而不是DS.Model '數組'),甚至DS.attr()無論如何我仍然在我以前的評論中提到的錯誤:) – MChan