解决方案 »

  1.   

    调用show/hide方法就好了吧,你销毁了容器,那不是从DOM树中删除了,再次调用可能是得到null引用什么的了。。
      

  2.   

    换成hide隐藏,再次调用还是一样的错误
    对了,我调用的方式:
    if (node.raw.type === 'FORM') {
    if (!Ext.getCmp(node.data.text + node.data.id)) {// 判断窗口是否已被打开
    var panel = Ext.create(
    'AM.view.' + node.raw.component, {
    id : node.data.text + node.data.id,
    //title : node.data.text,
    closable : false,
    iconCls : 'icon-activity'
    });
    var win = Ext.create('AM.view.FromWindow',{
    //height : panel.getHeight(),
    title : node.data.text,
    width : panel.getWidth(),
    items : panel
    });
    win.show();
    }
      

  3.   


    换成hide隐藏,再次调用还是一样的错误
      

  4.   

    本帖最后由 showbo 于 2014-04-09 09:17:24 编辑
      

  5.   


    换成hide隐藏,再次调用还是一样的错误就没见你改了哪里hide{
            text : '关   闭',
            handler : function() {
                alert(Ext.getCmp("dw1"));
                //this.ownerCt.ownerCt.destroy();
              this.ownerCt.ownerCt.hide()//////////////////
            }
    谢谢大大耐心解答,不过,我这么也改过,还是出一样的错误
      

  6.   

    我觉的是comboBox的问题,因为我用普通的textfield,没有错误
      

  7.   

    你其他代码有问题吧。。你放到window里面,点击window的那个x也会销毁这个form,我这里测试你那个就没有问题,不过store是本地的
    <script>
        Ext.onReady(function () {
            Ext.create("Ext.form.Panel", {
                autoHeight: true,
                width: 500,
                draggable: false,
                resizable: false,
                frame: true,
                bodyPadding: 5,
                border: 1,
                id:'formPanel',//加个id
                fileUpload: true,
                defaults: {
                    labelSeparator: ':', 
                    allowBlank: false,
                    labelAlign: 'left',
                    msgTarget: 'side'
                },
                items: [Ext.create('Ext.form.ComboBox', {
                    fieldLabel: '单位名称', 
                    labelWidth: 80,
                    id: 'dw1',
                    autoCreated: false,
                    editable: false,
                    name: 'dw',
                    allowBlank: false,
                    triggerAction: 'all', 
                    anchor: '100%',
                    emptyText: '请选择...', 
                    store: Ext.create('Ext.data.Store', { data: [{ id: 1, name: 'abc' }, { id: 2, name: 'abcd'}], fields: ['id', 'name'] }),
                    value: '',
                    valueField: 'id',
                    displayField: 'name'
                }), {
                    xtype: "textfield",
                    labelWidth: 80,
                    anchor: '100%',
                    fieldLabel: '项目名称',
                    name: 'projectName'
                }, {
                    layout: 'column',
                    padding: 0,
                    border: 0,
                    frame: true,
                    items: [{
                        columnWidth: .33,
                        padding: 0,
                        border: 0,
                        items: [{
                            xtype: "textfield",
                            labelWidth: 80,
                            anchor: '100%',
                            fieldLabel: '提出人姓名',
                            allowBlank: false,
                            msgTarget: 'side',
                            name: 'proposer'
                        }]                }, {
                        columnWidth: .33,
                        padding: '0 0 0 2',
                        border: 0,
                        items: []                }, {
                        columnWidth: .33,
                        padding: '0 0 0 2',
                        border: 0,
                        items: []                }]
                }, {
                    layout: 'column',
                    padding: 0,
                    border: 0,
                    items: [{
                        columnWidth: .5,
                        padding: 0,
                        border: 0,
                        items: [{
                            xtype: "datefield",
                            labelWidth: 80,
                            width: 230,
                            fieldLabel: '建议提出时间',
                            allowBlank: false,
                            msgTarget: 'side',
                            name: 'proposeTime'
                        }]                }, {
                        columnWidth: .5,
                        padding: '0 0 0 2',
                        border: 0,
                        items: [{
                            xtype: "datefield",
                            labelWidth: 80,
                            width: 230,
                            fieldLabel: '建议完成时间',
                            allowBlank: false,
                            msgTarget: 'side',
                            name: 'finshTime'
                        }]                }]
                }, {
                    layout: 'column',
                    padding: 0,
                    border: 0,
                    items: [{
                        columnWidth: .33,
                        padding: 0,
                        border: 0,
                        items: [{
                            xtype: "textfield",
                            labelWidth: 80,
                            anchor: '100%',
                            fieldLabel: '预计效益',
                            allowBlank: false,
                            msgTarget: 'side',
                            name: 'expectedBenefit'
                        }]                }, {
                        columnWidth: .33,
                        padding: '0 0 0 2',
                        border: 0,
                        items: [{
                            xtype: "textfield",
                            labelWidth: 70,
                            anchor: '100%',
                            fieldLabel: '实际效益',
                            allowBlank: false,
                            msgTarget: 'side',
                            name: 'actualBenefit'
                        }]                }, {
                        columnWidth: .33,
                        padding: '0 0 0 2',
                        border: 0,
                        items: []                }]
                }, {
                    layout: 'column',
                    padding: 0,
                    border: 0,
                    items: [{
                        columnWidth: .33,
                        padding: 0,
                        border: 0,
                        items: [{
                            xtype: "textfield",
                            labelWidth: 80,
                            anchor: '100%',
                            fieldLabel: '项目负责人',
                            allowBlank: false,
                            msgTarget: 'side',
                            name: 'leader'
                        }]                }, {
                        columnWidth: .33,
                        padding: '0 0 0 2',
                        border: 0,
                        items: []                }, {
                        columnWidth: .33,
                        padding: '0 0 0 2',
                        border: 0,
                        items: []                }]
                }, {
                    layout: 'table',
                    columns: 4,
                    border: 0,
                    items: [{
                        border: 0,
                        width: 120,
                        bodyStyle: 'text-align:center',
                        html: "<font size='2'>主要实施人</font>"
                    }, {
                        border: 0,
                        width: 120,
                        bodyStyle: 'text-align:center',
                        html: "<font size='2'>年龄</font>"
                    }, {
                        border: 0,
                        width: 120,
                        bodyStyle: 'text-align:center',
                        html: "<font size='2'>职务</font>"
                    }, {
                        border: 0,
                        width: 120,
                        bodyStyle: 'text-align:center',
                        html: "<font size='2'>职称</font>"
                    }]
                }, {
                    columnWidth: 1,
                    style: 'padding-top:5px',
                    layout: 'column',
                    bodyStyle: 'text-align:center',
                    border: 0,
                    items: [{
                        columnWidth: 1,
                        border: 0,
                        html: "<font size='2'>项目相关描述</font>"
                    }]
                }, {
                    columnWidth: 1,
                    border: 0,
                    layout: 'column',
                    items: [{
                        columnWidth: 1,
                        xtype: "textarea",
                        anchor: '100%',
                        name: 'leader'
                    }]            }, {
                    columnWidth: 1,
                    layout: 'column',
                    style: 'padding-top:8px',
                    labelWidth: 70,
                    border: 0,
                    items: [{
                        anchor: '100%',
                        allowBlank: true,
                        msgTarget: 'side',
                        columnWidth: 1,
                        xtype: 'fileuploadfield',
                        id: 'filepath',
                        name: 'filepath',
                        emptyText: '',
                        fieldLabel: '<font size="2">其他说明文件</font>',
                        buttonCfg: {
                            text: '浏览....',
                            iconCls: 'upload-file'
                        }
                    }]
                }],
                buttons: [{
                    id: 'btnOk',
                    text: '确  定',
                    handler: function () {
                        var fp = this.ownerCt.ownerCt;
                        alert(fp.id);
                        Ext.MessageBox.show({
                            msg: '正在保存,请稍等...',
                            progressText: 'Saving...',
                            width: 300,
                            wait: true,
                            waitConfig: {
                                interval: 200
                            },
                            icon: 'download',
                            animEl: 'saving'
                        });
                        fp.form.submit({
                            url: '',
                            method: 'post',
                            success: function (form, action) {
                                var flag = action.result.success;
                                if (flag == true) {
                                    Ext.MessageBox.alert('恭喜', '添加信息成功!');
                                    Datas.reload();
                                    fp.destroy();
                                }
                            },
                            failure: function () {
                                Ext.Msg.alert('错误', '服务器出现错误请稍后再试!');
                            }
                        });
                    }
                }, {
                    text: '关   闭',
                    handler: function () {
                       this.ownerCt.ownerCt.hide(); 
                    }
                }],
                renderTo: Ext.getBody()
            });
        });
        function toggleForm() {
            var f = Ext.getCmp('formPanel')
            f[f.isVisible() ? 'hide' : 'show']();
        }
    </script>
    <input type="button" onclick="toggleForm()" value="toggleState" />
      

  8.   

    Extjs 很多时候有自己的bug,这个是真的。 楼主不妨试试看Ext.create('Ext.form.ComboBox', {
                            fieldLabel : '单位名称', // UI标签名称
                            labelWidth : 80,
                            id:'dw1',
                            editable : false,
                            name : 'dw', // 作为form提交时传送的参数名
                            allowBlank : false, // 是否允许为空
                            //mode : "remote", // 数据模式为远程模式, 也可不设置,即默认值也为remote
                            // readOnly : true, // 是否只读
                            triggerAction : 'all', // 显示所有下列数.必须指定为'all'
                            anchor : '100%',
                            emptyText : '请选择...', // 没有默认值时,显示的字符串
                            store : Ext.create('AM.store.MyFactoryStore'),
                            value : '', // 设置当前选中的值, 也可用作初始化时的默认值, 默认为空
                            valueField : 'id', // 传送的值
                            displayField : 'name' // UI列表显示的文本
                        })
    吧这个代码改成 config的方式,而不是显示的create方式。
    简单在4的版本下,很有可能是在代码执行到生成你这个类的时候, 该combo已经被实例化了。那么你首次去实例化你 的类的时候*(也就是你这里的window),那么然后关闭,这个时候同事把combo也释放了,然后等你再次实例化后, combo已经不会被再次实例化。(以上是猜测,但是一定适合有写情况,至于楼主是不是这个问题,请自己核查)
      

  9.   

    算是解决了,就是把所有的属性都放在Ext.apply()里面,至于为什么不知道网上找到的,试了下,不出错了Ext.define("AM.view.ProjectDeclaration", {
    extend : 'Ext.form.Panel',
    initComponent : function() {
    Ext.apply(this, {
    autoHeight : true,
    width : 500,
    draggable : false,
    resizable : false,
    frame : frameValue,
    bodyPadding : 5,
    border : 1,
    fileUpload : true,
    defaults : {// 统一设置表单字段默认属性
    labelSeparator : ':', // 标签和控件的分隔符
    allowBlank : false, // 控件是否允许为空,设置为不允许为空
    labelAlign : 'left', // 标签对齐方式
    msgTarget : 'side' // 验证后字段在控件右边提示信息
    }, items : [Ext.create('Ext.form.ComboBox', {
    fieldLabel : '单位名称', // UI标签名称
    labelWidth : 8
    ....
    text : '关   闭',
    handler : function() {
    this.ownerCt.ownerCt.destroy();
    }
    }],
    renderTo : Ext.getBody()
    });
    this.callParent(arguments);
    }
    });
    谢谢你的耐心解答