javascript – ExtJS更改MessageBox(ExtJS 4.2.1)中默认按钮的位置

如果您使用默认按钮的代码:

Ext.Msg.show({
 title:'Save Changes?',
 msg: 'You are closing a tab that has unsaved changes. Would you like to save your changes?',
 buttons: Ext.Msg.YESNOCANCEL,
 icon: Ext.Msg.QUESTION
});

窗口上的按钮按顺序是 – 否 – 取消.我希望他们在订单取消 – 不 – 是的,我的应用程序的一致性.有没有办法添加不同的配置或根据我的需要更改它?

解决方法:

默认按钮只是在基于Ext.window.MessageBox.buttonIds配置的Ext.window.MessageBox.makeButton()私有方法中创建,并基于位掩码按钮显示/隐藏:Ext.Msg.YESNOCANCEL.

所以我们只需要覆盖buttonIds配置和位掩码:

    Ext.define('Ext.overrides.MessageBox', {
        override: 'Ext.window.MessageBox',

        OK: 1,           //0001
        CANCEL: 2,       //0010
        NO: 4,           //0100
        YES: 8,          //1000

        OKCANCEL: 3,     //0011
        YESNO: 12,       //1100
        YESNOCANCEL: 14, //1110

        buttonIds: [
            'ok', 'cancel', 'no', 'yes'
        ]
    });

Ext.Msg / Ext.MessageBox是单例,最初在我们的覆盖之前定义为Ext.window.MessageBox的实例(检查Ext.MessageBox代码的最后几行).

所以我们必须覆盖Ext.Msg / Ext.MessageBox以及:

    Ext.Msg = Ext.MessageBox = new Ext.window.MessageBox();

检查这simple fiddle.

相关文章

我有一个问题,我不知道如何解决.我有一个Indy10HTTP服务器.我...
我正在使用sdk1.17开发一个Firefox附加组件.它包含一个带有按...
Ext.define('PhysicsEvaluationSystemV1.view.base.Bas...
默认所有列(假设列3最大3列,动态显示),使用headerRowsEx中...
序言   1.ExtJs是一套很好的后台框架。现在很流行的,我们...
我在ExtJs中有这个表单.如果field1不为空,则field2不能为空....