未捕获的TypeError:无法读取属性' dom'为null

时间:2017-03-24 15:14:29

标签: extjs

当第一次点击showbutton然后窗口完全打开但是当我关闭窗口并再次打开它然后它给出错误("无法读取属性' dom' of null")on line' shiftWindow.show();'。任何帮助表示赞赏。

var shiftWindow = Ext.create('Ext.window.Window', {
    title: 'Edit Shift',
    resizable: false,
    id: 'shiftwindow',
    width: 465,
    //bodyPadding: 5,
    modal: true,
    store: shiftStorePlanner,

    items: {
        xtype: 'form',
        id: 'idFormShift',
        bodyPadding: 10,
        items: shiftViewModelPlannerData
    },
    buttons: [{
        text: 'Save',
        cls: 'planner-save-button',
        overCls: 'planner-save-button-over',
        handler: function () {
            var wi = this.up('.window');
            var form = Ext.getCmp('idFormShift');
            if (form.isValid()) {
                shiftTimemappingarray = [];
                //  getShiftTime();
                setShiftTimeDetails();
            }
        }
    }, {
        text: 'Cancel',
        handler: function () {
            this.up('.window').close();
        }
    }]
});
shiftWindow.show();

3 个答案:

答案 0 :(得分:1)

如果您在窗口上调用close(),窗口将被销毁。它不再存在于DOM中。在调用show()之前,您必须再次创建它。

或者,您可以hide()窗口,而不是关闭它。然后它将保留,不需要另一个创建。请注意,右上方的“x”仍会触发关闭事件。

答案 1 :(得分:0)

点击取消点击你的窗口,

而不是使用

this.up('.window').close();

你应该使用

this.up('.window').destroy();

因为那时它只会破坏整个窗口,包括dom。因此,每当你打开它,它都将是新的......;)

答案 2 :(得分:0)

也许您只是没有像我一样在体内定义div元素。

<div id="helloWorldPanel">
</div>