>我有一个应用程序,当页面加载时,它会得到如下所示的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 数据。我的意思是我需要发送带有它们所属的根元素的编辑记录。
任何帮助将不胜感激。提前谢谢..
假设您的模型实例知道它们属于哪些"根元素",您可以通过创建自定义编写器来实现这一点。例如,如果扩展 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;
}
这样,您只需要在代理上使用自定义编写器即可。