【问题标题】:ExtJS: Destroy window with config 'closeAction' set to 'hide'ExtJS:销毁配置“closeAction”设置为“隐藏”的窗口
【发布时间】:2013-02-23 22:51:16
【问题描述】:

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

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

myWin 上调用close() 因此只是隐藏了窗口。正如 Sencha 文档所暗示的那样,我需要销毁destroy 意义上的窗口:

从 DOM 中移除窗口并销毁它和所有后代 成分。该窗口将无法通过 显示方法。

我尝试了什么?我尝试了:

  1. 直接在窗口对象上调用destroy

    myWin.destroy();
    
  2. 在调用close()之前将closeAction设置为destroy

    win.closeAction='destroy';
    win.close();
    

在这两种情况下,myWin 只是被隐藏而不是被破坏。有什么想法吗?

【问题讨论】:

  • 使用destroy(),它被完美摧毁:jsfiddle.net/5BcBd/1
  • @VisioN 感谢您的评论。您如何检查它是简单隐藏还是实际销毁?就我而言,我能够重新显示窗口,这就是为什么我确定它是隐藏的而不是被破坏的。
  • 我已经更新了上面评论中的小提琴,以便在删除前后显示body 的内容。通常,您可以为此使用 Chrome DevTools 或 Firebug。在destroy() 的情况下,DOM 结构被移除,如果你之后尝试调用show(),JS 将引发错误。
  • 确实你是对的;请将此添加为答案,明确说明我在我的问题中对destroy() 的断言是不正确的 - 我会将您的答案标记为正确答案。谢谢!

标签: javascript extjs extjs4.1


【解决方案1】:

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

调用myWin.destroy() 后,结构被清除,无法使用myWin.show() 重新调用窗口。

【讨论】:

    【解决方案2】:

    你想销毁窗口吗?使用下面的代码

    Ext.getCmp('Window Id').destroy();    
    

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2014-11-20
      • 2011-06-17
      • 2012-08-29
      相关资源
      最近更新 更多