gpt4 book ai didi

javascript - Ext.window.MessageBox draggable false,调用hide方法出错

转载 作者:行者123 更新时间:2023-11-30 05:30:38 25 4
gpt4 key购买 nike

像这样创建一个 MessageBox 实例之后

var msgBox = Ext.create('Ext.window.MessageBox',{draggable: false}); 

- 实际上 draggable false 是通过对 Ext.window.Window 的覆盖设置的,我这样放置是为了更容易重现。

- 我确实更喜欢单例语法,但在我正在处理的代码中已经有大量这样创建的实例。

   msgBox.alert("I am a bug, try to close me to reproduce");

试图关闭这个 MessabeBox 调用 hide 方法:

hide: function() {
var me = this;
me.dd.endDrag();
me.progressBar.reset();
me.removeCls(me.cfg.cls);
me.callParent(arguments);
},

抛出以下错误:

Cannot read property 'endDrag' of undefined

我是不是遗漏了什么或者这是一个错误?

更新:

我正在使用 ExtJs 4.1.1(但也发生在 Extjs 4.2.1(固定在 4.2.2 上))

有什么想法或意见吗?

最佳答案

为了避免这个错误,我重写了 MessageBox 类的 hide 方法:

        Ext.define('Ext.window.MessageBox', {
override: 'Ext.window.MessageBox',
hide : function () {
/**
* this is the default implementation of hide in minus MessageBox the commented line
* */
var me = this;
//me.dd.endDrag();
me.progressBar.reset();
me.removeCls(me.cfg.cls);
/**
* this is the implementation of hide in Ext.Component
* avoided callParent() because that would have called the overridden hide method
*/
me.showOnParentShow = false;
if (!(me.rendered && !me.isVisible()) && me.fireEvent('beforehide', me) !== false) {
me.hidden = true;
if (me.rendered) {
me.onHide.apply(me, arguments);
}
}
return me;
}
});

更新,这是原来的覆盖

Ext.window.Window.override({
initComponent: function () {
this.draggable = false;
this.resizable = false;
this.callParent();
}
});

我愿意接受避免这种覆盖的建议。谢谢。

关于javascript - Ext.window.MessageBox draggable false,调用hide方法出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com