我在使用json请求响应加载表单面板时遇到了奇怪的问题。 在之前的项目中,我曾经使用loadRecord(记录)从网格存储中加载详细信息面板 商店具有关联模型,因此记录的嵌入对象被映射到模型的属性,并且形式呈现这些字段没有任何问题。 一旦我不得不直接使用form.load()的响应加载表单,我就看不到记录的嵌入对象的属性。 例如来自json
{
"message":null,
"success":true,
"data":{
"code":"1",
"name":"Canon Canada",
"modifiedBy":null,
"modifiedAt":null,
"address":{
"street":"6390 Dixie",
"suite":null,
"city":"Mississauga",
"provinceCode":"ON",
"postalCode":"L5T1P7"
},
...
}
}
我看到了渲染的代码'和' name'属性,但不是' street'和' city'。
这是form.Panel代码
Ext.define('App.view.billto.BillToDetailForm' ,{
extend : 'Ext.form.Panel'
,layout: 'form'
,alias : 'widget.BillToDetailForm'
,autoHeight: true
,bodyPadding: 10
,fieldDefaults: MainAppViewConfig.fieldDefaults
,defaults: {xtype: 'fieldcontainer',layout:'hbox', anchor: '100%'}
,items : [ { defaults: {xtype: 'textfield', allowBlank: false},
items: [{name: 'code', fieldLabel:'Bill To Code'}
,{name: 'name',fieldLabel: 'Name'}]}
,{ defaults: {xtype: 'textfield', allowBlank: false},
items: [{name: 'address.suite', fieldLabel:'Suite'}
,{name: 'address.street', fieldLabel:'Street'}]}
...
]
,loadContentForCode: function(code){
//this.getForm().trackResetOnLoad = true;
this.getForm().load({ method: 'GET',url: 'billtoDetail',
params:{'code':code},
waitMsg: 'Loading...',
/*success:function(form, action) {
console.log('BillToDetailForm:loadContentForCode callback on success '+this);
var responseObj = Ext.JSON.decode(action.response.responseText,true);
var billToModel = Ext.create('MPS.model.BillToModel',responseObj.data);
form.loadRecord(billToModel);
}*/
});
}
});
正如您所看到的,我甚至尝试在成功处理程序中重新加载表单。
我也注意到var billToModel = Ext.create(' MPS.model.BillToModel',responseObj.data); 没有正确填充模型的字段' street'和' city'。这也可能是导致问题的原因。
Ext.define('MPS.model.BillToModel', {
extend: 'Ext.data.Model'
,idProperty:'code'
,fields: [
{name: 'code', type: 'string'},
{name: 'name', type: 'string'},
{name: 'street',mapping:'address.street', type: 'string'},
{name: 'city', mapping:'address.city', type: 'string'},
...
]
});
请您指出问题的真正原因或建议任何解决方案。 谢谢。
答案 0 :(得分:1)