【问题标题】:ExtJS change position of default buttons in MessageBox (ExtJS 4.2.1)ExtJS 更改 MessageBox 中默认按钮的位置 (ExtJS 4.2.1)
【发布时间】:2023-03-09 17:40:01
【问题描述】:

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

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
});

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

【问题讨论】:

  • 您尝试使用buttons: [ {text: 'Cancel', itemId: 'cancel'}, {text: 'No', itemId: 'no'}, {text: 'Yes', itemId: 'yes', ui: 'action'} ]

标签: javascript extjs extjs4.2


【解决方案1】:

默认按钮是基于Ext.window.MessageBox.buttonIds 配置在Ext.window.MessageBox.makeButton() 私有方法中简单地创建,并根据位掩码buttons: 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

【讨论】:

  • 我们可以只使用按钮的配置而不是已经提供的按钮集,而不是覆盖。请参阅我对原始问题的评论。
  • @bunkdeath,如果我们想在整个应用程序中使用此按钮顺序 - 最好覆盖。
  • 是的。重新阅读问题后。由于他们在应用程序中的顺序,我觉得重写对开发有好处。 (y)
  • 但是 Override 有一个严重的问题..它会影响其他按钮的对齐方式
  • 尝试使用剩余的按钮 Ext.MessageBox.OKCANCEL、Ext.MessageBox.YESNO 按钮会改变检查我的小提琴fiddle.sencha.com/#view/editor&fiddle/1sbn
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
相关资源
最近更新 更多