javascript – 如何更改ExtJS 4.2的.save()JSON输出
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何更改ExtJS 4.2的.save()JSON输出,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1546字,纯文字阅读大概需要3分钟。
内容图文
我有一个问题,使用ExtJS可更新网格将数据保存到我的数据库.
我正在使用我在Progress ABL中编写的REST API.
API正在运行,但输入JSON和输出JSON非常具体.
我可以将JSON数据读入我的网格并显示它,但是当我想保存新记录时,网格会创建一个错误的JSON输出.
我的输出必须是这样的:
{
"request":
{
"dsUsers":
{
"ttUsers":
[{"ID":20,"LOGIN":"test","PASS":"","ID_ADDR":0,"ID_CUST":0}]
}
}
}
但是我无法在编写器中创建请求和dsUsers组.
我已经测试了很多,但我真的不知道我需要改变什么才能使它工作.
谢谢
解决方法:
Base 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) {
// convert to single object format
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'
}
});
当然,您可以通过在config中定义“request”和“dsUsers”属性的名称来创建更具可配置性和可重用性的自定义编写器.
举例说明:https://fiddle.sencha.com/#fiddle/33l
内容总结
以上是互联网集市为您收集整理的javascript – 如何更改ExtJS 4.2的.save()JSON输出全部内容,希望文章能够帮你解决javascript – 如何更改ExtJS 4.2的.save()JSON输出所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。