我从服务器返回的数据如下:
["admin", "user", "developer", "super"]
我正在尝试将其映射到此模型中:
Ext.define('RoleModel', {
extend: 'Ext.data.Model',
//fields: [{}]
});
我的商店看起来像这样:
Ext.create('Ext.data.Store', {
model: 'RoleModel',
proxy: {
type: 'ajax',
url : '/roles',
reader: {
type: 'json'
}
},
autoLoad: true
});
如何将我从服务器获取的单个数组映射到我的RoleModel
?
答案 0 :(得分:2)
您已经知道了,在将 JSON 解析为您的数据模型之前,它需要采用以下形式:
[
{ "role": "admin" },
{ "role": "user" },
{ "role": "developer" },
{ "role": "super" }
]
...但是如果您正在摇摆ExtJS 5.x ,则无需手动进行Ajax调用 - 您可以应用 <代理阅读器上的em> transform ,例如:
Ext.create('Ext.data.Store', {
model: 'RoleModel',
proxy: {
type: 'ajax',
url : '/roles',
reader: {
type: 'json',
transform: function(data) {
return data.map(function(x){
return { role: x };
});
}
}
}
});
答案 1 :(得分:1)
我最终在我的模型中添加了一个角色字段,并做了类似的事情:
Ext.Ajax.request({
url: '/roles',
success: function(response){
var json = Ext.JSON.decode(response.responseText);
var jsonObj = json.map(function(r){ return {role: r}});
store.loadData(jsonObj);
}
});