我有一个带有Ext.form.Panel的Ext 4.2.1应用程序,在尝试将表单字段值发送到服务器时,我需要先确定其中一个值来进行切换。对不起,我无法提供完整的示例,但我遇到的麻烦就是这个命令:
form.getForm().findField('TASK_ID')
在我的申请中如果抛出:
TypeError: Cannot read property 'getItems' of null
at Ext.define.getFields (ext-all-debug.js:89221)
at Ext.define.findField (ext-all-debug.js:89471)
at Ext.Ajax.request.success
第89221行如下:
getFields: function() {
return this.monitor.getItems();
},
我不确定monitor
是什么,所以我有点不能深入调试这个。有没有人对可能出错或可以检查的内容有任何见解?
答案 0 :(得分:2)
当在window.close()之后在Ext.window.Window中创建表单时我得到了相同的错误,调试到源代码,找到窗口再次处理autoRender,实际上在我的单例窗口效果冲突,如下代码:
getUpdateGroupWindow: function(){
var me = this;
if(me.updateGroupWindow == null){
me.updateGroupWindow = Ext.create('MyApp.view.groupEditWindow');
}
return me.updateGroupWindow;
},
阅读api:[http://extjs-doc-cn.github.io/ext4api/#!/api/Ext.window.Window-cfg-closeAction][1] window closeAction默认为'destroy',从DOM中删除窗口并销毁它和所有后代组件。该窗口无法通过show方法重新显示, 另一个值'hide':通过设置隐藏可见性和应用负偏移来隐藏窗口。该窗口可通过show方法重新显示。
显示我的最终代码:
Ext.define('MyApp.view.groupEditWindow',{
extend:'Ext.window.Window',
title:'修改信息',
width: 400,
closeAction: 'hide', //fix error config
modal: true,
groupForm:null,
getGroupForm:function(){
var me = this;
if(me.groupForm == null){
me.groupForm = Ext.create('MyApp.view.EditGroupForm');
}
return me.groupForm;
},
initComponent: function(){
var me = this;
Ext.applyIf(me, {
items: [me.getGroupForm()],
buttons: [{
text: '取消',
handler: function() {
me.close();
}
}]
});
me.callParent(arguments);
}
});