Extjs 覆盖messagebox并向默认按钮添加图标
这里有人知道如何覆盖messagebox来放置按钮图标吗?i、 e:检查图标是否为是/确定,交叉按钮是否为否,等等 我试图覆盖Extjs 覆盖messagebox并向默认按钮添加图标,extjs,extjs4,extjs4.2,Extjs,Extjs4,Extjs4.2,这里有人知道如何覆盖messagebox来放置按钮图标吗?i、 e:检查图标是否为是/确定,交叉按钮是否为否,等等 我试图覆盖Ext.window.MessageBox的makeButton功能,但它似乎不起作用,甚至没有点击调试器: Ext.override(Ext.window.MessageBox, { makeButton: function (btnIdx) { debugger; var btnId = this.buttonIds[btnId
Ext.window.MessageBox的makeButton
功能,但它似乎不起作用,甚至没有点击调试器
:
Ext.override(Ext.window.MessageBox, {
makeButton: function (btnIdx) {
debugger;
var btnId = this.buttonIds[btnIdx];
return new Ext.button.Button({
handler: this.btnCallback,
itemId: btnId,
scope: this,
text: this.buttonText[btnId],
minWidth: 75,
iconCls: ['check', 'no', 'cancel', 'blah'][btnId]
});
}
});
从源代码中可以看到,makeButton
方法是从Ext.window.MessageBox
调用的
我假设您正在使用Ext.MessageBox
(或Ext.Msg
)单例实例来显示消息框。在创建Ext.window.MessageBox
之后,立即在回调函数中创建此实例(请检查中的第三个参数)。这也意味着它发生在覆盖之前
因此,您可以直接覆盖singleton实例的按钮,如下所示:
Ext.Msg.msgButtons.ok.setIconCls(okBtnCls);
Ext.Msg.msgButtons.yes.setIconCls(yesBtnCls);
Ext.Msg.msgButtons.no.setIconCls(noBtnCls);
Ext.Msg.msgButtons.cancel.setIconCls(cancelBtnCls);
如果要通过创建类的新实例来显示消息框,也可以使用makeButton
覆盖:
var myMsg = Ext.create('Ext.window.MessageBox', {
closeAction: 'destroy'
}).show({
title: 'Custom MessageBox Instance',
message: 'I can exist along with Ext.Msg'
});
从源代码中可以看到,makeButton
方法是从Ext.window.MessageBox
调用的
我假设您正在使用Ext.MessageBox
(或Ext.Msg
)单例实例来显示消息框。在创建Ext.window.MessageBox
之后,立即在回调函数中创建此实例(请检查中的第三个参数)。这也意味着它发生在覆盖之前
因此,您可以直接覆盖singleton实例的按钮,如下所示:
Ext.Msg.msgButtons.ok.setIconCls(okBtnCls);
Ext.Msg.msgButtons.yes.setIconCls(yesBtnCls);
Ext.Msg.msgButtons.no.setIconCls(noBtnCls);
Ext.Msg.msgButtons.cancel.setIconCls(cancelBtnCls);
如果要通过创建类的新实例来显示消息框,也可以使用makeButton
覆盖:
var myMsg = Ext.create('Ext.window.MessageBox', {
closeAction: 'destroy'
}).show({
title: 'Custom MessageBox Instance',
message: 'I can exist along with Ext.Msg'
});
正如@scebotari66所述,Ext.Msg
和Ext.MessageBox
是Ext.window.MessageBox
的单例。因此,当您重写Ext.window.MessageBox.makeButton
时,如果您对该类使用单例,则这将无效
但是,有一种方法可以将覆盖应用到Ext.window.MessageBox
到singleton。猜怎么着
(drumroll)
坦坦塔南强>
Ext.MessageBox=Ext.Msg=new Ext.window.MessageBox()代码>
是的,没错。您只需要在重写后重新分配singleton
因此:
下次调用Ext.Msg.alert()
时,您的图标也会显示出来
我希望这对你有帮助
注意:iconCls
配置的顺序应该是[确定,是,否,取消]
正如@scebotari66所述,Ext.Msg
和Ext.MessageBox
是Ext.window.MessageBox
的单例。因此,当您重写Ext.window.MessageBox.makeButton
时,如果您对该类使用单例,则这将无效
但是,有一种方法可以将覆盖应用到Ext.window.MessageBox
到singleton。猜怎么着
(drumroll)
坦坦塔南强>
Ext.MessageBox=Ext.Msg=new Ext.window.MessageBox()代码>
是的,没错。您只需要在重写后重新分配singleton
因此:
下次调用Ext.Msg.alert()
时,您的图标也会显示出来
我希望这对你有帮助
注意:iconCls
配置的顺序应该是[确定,是,否,取消]
我想生成按钮
覆盖就可以了。。查看我的回答我认为makeButton
覆盖就可以了。。如果你没有回答,我也看不见你拥有80%的信用:如果你没有回答,我也看不到。:)你拥有80%的信用:D