Extjs 4.2 加载名称为 [] 的表单数据
Posted
技术标签:
【中文标题】Extjs 4.2 加载名称为 [] 的表单数据【英文标题】:Extjs 4.2 load form data with [] in name 【发布时间】:2015-05-11 15:16:39 【问题描述】:我有一个 extjs 表单,其名称类似于
udField[1] udFIeld[2]
我可以毫无问题地将它保存在服务器端。但是当我想加载表单时,它不会填充值....
这是来自 ud dield 的示例:
labelSeparator: config.required == 1 ? ': <span style="color:red">*</span>' : ':',
allowBlank: config.required == 0,
emptyText: config.options.blankText,
xtype: 'textfield',
name: 'udFields[' + config.options.udFieldId + ']',
flex: 0,
fieldLabel: Ext.lang(config.display_name),
这是我加载它的方式:
Ext.getCmp('rootform').getForm().load(
url: 'ajax/Freetext/Article/LoadSingle',
waitMsg: Ext.lang('t_warenkorb_wird_geladen'),
params:
cartarticle_id: cartarticleId,
sid: config.sid
,
success: function (form)
some checks and other stuff
我从服务器得到正确的响应,这是响应 json 数据:
amount: "1"
cartarticle_id: "xxx"
catalogpartner_id_freetxt: "xxx"
delivery_date: "15.04.2015"
description_long: "test "
description_short: "test"
manufacturer_aid: "xxx"
manufacturer_name: "xxxxxx"
order_unit: "PAK"
price_amount: "122.12"
remarks: "test"
supplier_aid: "test"
udFields[123]: "test"
但是这该死的东西不会加载任何东西......任何人都有一些想法???
ps 这里是带有模糊数据的整个 json 字符串:
"success":true,"data":"catalogpartner_id_freetxt":"12","description_short":"test","cartarticle_id":"12","amount":"1","order_unit":"PAK","price_amount":"122.12","delivery_date":"15.04.2015","description_long":"test ","remarks":"test","supplier_aid":"test","manufacturer_name":"Datenbank feiger Text (@todo)","manufacturer_aid":"Datenbank feiger Text (@todo)","udFields[123]":"test","debug":["11.05.2015 16:58:20.860232 params:Array\n(\n [cartarticle_id] => 312\n [sid] => 132\n)\n<br><BR>"]
【问题讨论】:
可以定义一个阅读器并设置useSimpleAccessors: true
如果我能达到这样的目标,我会尝试。如果现在,那么我必须定义一个自定义渲染器。
Aaaaa 看看你的意思。我不使用商店,我使用表单提交功能。没有任何附属商店。
看看:docs.sencha.com/extjs/4.1.1/#!/api/Ext.form.Basic-cfg-reader
已经在上面了。但我迷失了如何为我的数据定义一个阅读器来设置映射权。像从 udFields[1363] -> 从数组加载。因为数字 1363 也来自数据。并且不是预先确定的
【参考方案1】:
我不知道如何配置它。尝试了各种方法。最后我从一个数组中做了一个成功的解析器...... 不漂亮,但我可以依赖的唯一解决方案....
success: function (form, data)
if (data.result.data)
if (data.result.data.udFields)
for (var key in data.result.data.udFields)
var element = data.result.data.udFields[key];
var input = form.findField('udFields' + element.id);
if (input)
input.setValue(element.value);
...
【讨论】:
以上是关于Extjs 4.2 加载名称为 [] 的表单数据的主要内容,如果未能解决你的问题,请参考以下文章