Ext js 3.4 window添加/删除组件错误

时间:2013-01-02 15:41:32

标签: layout components add extjs3

我们正在使用extjs 3.4。目的是替换Ext.Window中的组件。即使 当我们在尝试doLayout()错误时删除旧组件并添加新组件时没有错误 未捕获的TypeError:无法读取未定义的属性'offsetWidth' 发生。

创建窗口的代码是:

    function createWindowConf(id, winconf, items) {
        var conf = {
            id: id,
            title: winconf.title, 
            iconCls: winconf.icon,
            x : winconf.xpos,
            y : winconf.ypos,
            width : parseInt(winconf.xsize), 
            height : parseInt(winconf.ysize),
            layout : winconf.layout, //'border',
            border : false,
            resizable : winconf.resizable,
            manager: windows,
            shadow: false,
            closable: true,
            items: items
        };
        var win = new Ext.Window(conf);
        win.render(desktopEl);
        return win;
    };

这些项是Ext.grid.GridPanel和Ext.form.FormPanel。 根据用户当前的握把选择(位置0中的组件),应移除旧表格并添加新表格(位置1中的组件)。

创建表单的代码是:

    var theConfig = {
    id: config.yid, 
            bodyStyle: 'padding:5px 5px 0',
            width: 370,
            maxWidth: 370,//not resizable
            minWidth: 370,
            layout: 'form',
            margins: '0 0 0',
            region: 'east',
            split: true,
            colapsible : true,
            trackResetOnLoad: true,
            autoScroll: true,
            fieldDefaults: {
                msgTarget: 'side',
                labelWidth: 75
            },
            items: [],
            buttons: [scopeDetails.updateButton, scopeDetails.submitButton]
    };
    this.detailsForm = new Ext.form.FormPanel(theConfig); 

之后添加的项目。

从窗口更新(添加/删除)组件的代码是:

    this.updateWin = function(moduleForRemoveId, form, idWin) {
        var win = this.getWindow(idWin);
        if (win != null) {
            win.remove(moduleForRemoveId); 
            win.add(form);
            win.doLayout();
        }
    }

并在win.doLayout()中产生错误。

删除所有组件并添加新组件:

    win.removeAll();
    win.add(this.grid);
    win.add(this.form);
    win.doLayout();

我们有同样的错误。

任何建议都会非常有用,因为错误超过3天

1 个答案:

答案 0 :(得分:1)

我很确定错误来自其他内容,而不是组件删除/添加。 我创建了一个简单的testcase,它定义了一个带有表单和网格的窗口,以及一个用面板替换所有内容的按钮。它有效。

您的代码不完整。你应该提供一个完整的例子。 你有没有试过自己调试?在Chrome脚本调试程序上启用“暂停未捕获的例外”可重现该错误。您将获得所发生事件的堆栈跟踪,并提供有关错误的提示。当然包括ext-all-debug。