ExtJS:使用配置项'closeAction'设置为'hide'销毁窗口

8

我有一个窗口,它的closeAction配置在实例化时被设置为'hide'

var myWin = Ext.create('Ext.window.Window', {
    ...
    closeAction:'hide',
    ...
});

调用myWinclose()方法只是隐藏了窗口。根据Sencha文档所暗示的,我需要在destroy的意义上销毁窗口:

从DOM中删除窗口并销毁它和所有后代组件。该窗口将无法通过show方法重新显示。

我尝试了什么? 我尝试了:
  1. calling destroy directly on the window object:

    myWin.destroy();
    
  2. setting closeAction to destroy prior to calling close():

    win.closeAction='destroy';
    win.close();
    
在这两种情况下,myWin仅仅是被隐藏了而不是被销毁了。有什么想法吗?

使用 destroy() 完美销毁:http://jsfiddle.net/5BcBd/1/. - VisioN
@VisioN 谢谢您的评论。您是如何检查它是仅隐藏还是实际销毁的?在我的情况下,我能够重新显示窗口,这就是为什么我确定它是隐藏而不是销毁的原因。 - Joseph Victor Zammit
1
我已经更新了上面评论中的fiddle,以便显示删除前后body的内容。通常情况下,您可以使用Chrome DevTools或Firebug进行操作。在调用destroy()之后,DOM结构将被移除,如果您尝试在此之后调用show(),则JS会引发错误。 - VisioN
确实,你是正确的;请将此作为答案添加,明确声明我在问题中关于 destroy() 的断言是不正确的 - 我会将您的答案标记为正确答案。谢谢! - Joseph Victor Zammit
2个回答

10

方法destroy()应该成功地从DOM中删除窗口对象。为了说明这一点,您可以在JSFiddle中检查基本示例。

调用myWin.destroy()后,结构将被清除,并且不可能使用myWin.show()重新调用窗口。


3
你想关闭窗口吗?使用以下代码:
Ext.getCmp('Window Id').destroy();    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接