我将一个表单变量传递给我的窗口,并从网格/商店中填充记录。以下是代码:
{
tooltip: 'Edit',
handler: function(grid, rowIndex, colIndex){
var rec=grid.getStore().getAt(rowIndex);
var edit_app=Ext.create('Ext.Window',{
title: 'Edit Applicant: ' + rec.ge('app_name'),
items:[app_form],
buttons:[{
text: 'Update',
handler:function(){
if(edit_app.down('form').getForm().isValid()){ //or app_form.getForm().isValid(
edit_app.down('form').getForm().submit({
url: 'api/api.php',
waitMsg: '..submitting',
success: function(form,actns){
edit_app.hide();
},
failure: function(fomr,actnz){
alert('Error with submission');
edit_app.close();
}
});
}
}
}, {
text: 'Close',
handler: function(){
edit_app.hide();
}
}]
}).show();
var form = edit_app.down('form').getForm(); //app_form.getForm()
form.loadRecord(rec);
}
}
当我第一次打开表单时,它提交更新就好了。但是,当我第二次尝试相同的操作时,我得到以下消息:
me.getRenderTarget(...)。dom未定义
targetNodes = me.getRenderTarget().dom.childNodes,
我一直在尝试谷歌搜索解决方案但直到现在都没有成功。 帮助将受到高度赞赏
答案 0 :(得分:0)
我认为问题可能是你正在使用“Ext.create”来构建一个新的窗口对象,每次调用处理程序,并将表单作为变量引用传入,并使用“hide”和“关闭“当你完成表格时。当Ext尝试访问原始对象时,这会导致很多冲突,并且找不到子对象,这就是您的错误。表单仍然可以与原始对象关联,或者您的窗口选择器可能正在获取原始窗口,现在不再具有该窗体。无论哪种方式,Ext的选择器都很混乱。
要测试它,请尝试在处理程序外移动Window create,并调用“myWindow.show()”和表单填充代码。