基础的 Ext.data.writer.Json
允许你仅定义根数据属性。但是如果你需要更多自定义结构,你可以很容易地创建自己的编写器。
你的编写器应该继承自Ext.data.writer.Json
并重写writeRecords
方法。此方法将记录数据添加到请求中。
在你的情况下,自定义编写器应该像这样:
Ext.define('myWriter', {
extend: 'Ext.data.writer.Json',
writeRecords: function(request, data) {
var root = this.root;
if (this.expandData) {
data = this.getExpandedData(data);
}
if (this.allowSingle && data.length === 1) {
data = data[0];
}
request.jsonData = request.jsonData || {};
request.jsonData['request'] = {
'dsUsers': {}
};
request.jsonData['request']['dsUsers'][root] = data;
return request;
}
});
然后您可以在模型或存储代理中使用您的自定义编写器:
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'name', 'email'],
proxy: {
type: 'rest',
writer: Ext.create('myWriter', {
root: 'ttUsers',
mainRoot: 'dsUsers'
}),
url : '/users'
}
});
当然,您可以通过在配置中定义
"request"
和
"dsUsers"
属性的名称来创建更可配置和可重用的自定义编写器。
示例演示:
https://fiddle.sencha.com/#fiddle/33l