1

我将一个表单变量传递给我的窗口,并且记录是从网格/存储中填充的。以下是代码:

{
    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,

我一直在尝试使用谷歌搜索解决方案,但直到现在还没有成功。帮助将不胜感激

4

1 回答 1

0

我相信问题可能是你使用“Ext.create”来构建一个新的窗口对象,每次调用处理程序,并将表单作为变量引用传递,并在何时使用“隐藏”和“关闭”你已经完成了表格。这可能会导致很多冲突,因为 Ext 尝试访问原始对象,并且找不到子对象,这就是您的错误的样子。表单仍然可以与原始对象相关联,或者您的窗口选择器可能正在获取原始窗口,该窗口现在不再具有表单。无论哪种方式,Ext 的选择器都是混乱的。

要对此进行测试,请尝试将 Window 创建移到处理程序之外,并调用“myWindow.show()”和您的表单填充代码。

于 2012-12-10T03:49:28.247 回答