3

在以下情况下,我收到错误消息:“Uncaught TypeError: Cannot read property 'addCls' of null”。

我需要两个模态窗口。第一个模态窗口有一个网格。当我在第一个模态窗口中双击 Grid 时,我应该打开第二个模态窗口。下面是我使用的代码:

  saleOrderEmployeeGrid.on('celldblclick', function(tableview, td, cellIndex, record, tr, rowIndex, e, eOpts){
    loadActivityWindow();
  });
  }

  function loadActivityWindow()
  {
        jobSlotActivityWin = new Ext.Window({
        id          :'jobSlotActivityWinId',
        modal       : true,
        layout      : 'fit',
        width       : 900,
        height      : 500,
        closeAction :'destroy',
        plain       : true,
        model       : true,
        stateful    : false,
        title       :'Create Job Slot',
        items       : [soActivityPanel],
        buttons     : [{
            text        : 'Close',
            handler     : function(){
                            jobSlotActivityWin.destroy();
                        }
            }
        ] 
        });
        jobSlotActivityWin.show();
        Ext.WindowManager.register (createJobSlotWin); // createJobSlotWin is the first modal window
        Ext.WindowManager.register(jobSlotActivityWin); // jobSlotActivityWin is the second modal window created above
        Ext.WindowManager.bringToFront ('jobSlotActivityWinId');
  }

因此,当我双击 saleOrderEmployeeGrid 时,我看到第二个模式窗口很好。然后我关闭第二个模态窗口并在第一个模态窗口上再次双击网格。

这现在不会显示第二个模态窗口。它在第一个模态窗口的背景中完全被屏蔽和空白,我在 JavaScript 控制台中看到以下错误: Uncaught TypeError: Cannot read property 'addCls' of null

更准确地说,错误似乎来自 jobSlotActivityWin.show() 因为我的调试日志在那时失败了。

有人遇到过这个问题并且可以帮助我吗?

4

2 回答 2

8

将closeAction设置为隐藏,不知道为什么默认是destroy,但它本质上意味着当窗口关闭时,元素将从dom中删除并且show不再工作。

http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.panel.Panel-cfg-closeAction

回复评论:

条件创建示例

//the window is only created once, the data is always show and updated.

if(!this.win) {
    this.win = createWindow();
}

updateWindowData();
this.win.show();

我们不是到处说 closeAction:'hide',而是在我们的源代码中有这样的东西

Ext.override(Ext.Window, {
    closeAction: 'hide'
})

如果您在创建任何窗口之前放置该代码段,则默认情况下所有窗口都将关闭。

于 2013-07-24T03:47:27.457 回答
1

   closeAction:'hide',
   onEsc: funtion() {
       jobSlotActivityWin.hide()
   }
于 2013-12-19T11:35:40.417 回答