我有一个应用程序,当页面加载时会得到如下所示的json响应。
{
{"level2List":[{id:'id1', name:'sample'},....]},
{"level3List":[{id:'id1', name:'sample'},....]},
{"level4List":[{id:'id1', name:'sample'},....]}}
所以我将所有记录都放在根元素中,如“level2List”,“level3List”,level4List等。通过使用这些记录,我创建了一个可编辑的网格。当用户编辑我正在调用store.sync方法的任何记录时。然后它只将编辑后的记录的json发送到后端服务器。喜欢
[{id:'id1', name:'sample'},....]
但是我需要以与页面加载相同的格式发送json数据。我的意思是我需要使用它们所属的根元素发送已编辑的记录。
非常感谢任何帮助。提前谢谢..
答案 0 :(得分:2)
假设您的模型实例知道它们属于哪个“根元素”,您可以通过创建自定义编写器来实现此目的。例如,如果扩展Ext.data.writer.Json,并在其中创建自己的writeRecords()方法,则可以动态定义要发送的根。
writeRecords: function(request, data) {
var root = this.root; // HERE IS WHERE YOU COULD DEFINE YOUR ROOT
if (this.allowSingle && data.length == 1) {
// convert to single object format
data = data[0];
}
if (this.encode) {
if (root) {
// sending as a param, need to encode
request.params[root] = Ext.encode(data);
} else {
//<debug>
Ext.Error.raise('Must specify a root when using encode');
//</debug>
}
} else {
// send as jsonData
request.jsonData = request.jsonData || {};
if (root) {
request.jsonData[root] = data;
} else {
request.jsonData = data;
}
}
return request;
}
您只需在代理上使用自定义编写器。