消息框显示方法上的 ExtJS callParent 不起作用

Posted

技术标签:

【中文标题】消息框显示方法上的 ExtJS callParent 不起作用【英文标题】:ExtJS callParent on messageBox show method not working 【发布时间】:2021-04-30 16:02:04 【问题描述】:

在 ExtJS 6.02 上,我有这个代码:

Ext.define('MyDialog', 
     extend : 'Ext.window.MessageBox'
   , title : 'My title'
   , closable : false
   , buttonText : 
        ok     : 'Yes'
      , yes    : 'Yep'
      , no     : 'No way'
      , cancel : 'Cancel'
   
   , show: function(cfg) 
      cfg = 
           icon: Ext.Msg.QUESTION
         , msg : 'test'
         , buttons : Ext.Msg.OKCANCEL
      ;

      this.callParent(cfg);
   
);

弹窗出现空白,看来cfg没有被传递给父类方法!

小提琴:https://fiddle.sencha.com/#view/editor&fiddle/3deb

【问题讨论】:

【参考方案1】:

想通了。

callParent的参数必须是arrayLike类型,因为ExtJS内部使用Function.prototype.apply()

所以这行得通:

Ext.define('MyDialog', 
     extend : 'Ext.window.MessageBox'
   , title : 'My title'
   , closable : false
   , buttonText : 
        ok     : 'Yes'
      , yes    : 'Yep'
      , no     : 'No way'
      , cancel : 'Cancel'
   
   , show: function(cfg) 
      cfg = 
           icon: Ext.Msg.QUESTION
         , msg : 'test'
         , buttons : Ext.Msg.OKCANCEL
      ;

      this.callParent([cfg]);
   
);

【讨论】:

以上是关于消息框显示方法上的 ExtJS callParent 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS4:如何在文本框、组合框等旁边显示验证错误消息

商店上的 extjs 组合框 getCount() 返回 0

在 Extjs 中显示错误消息的最佳方式是啥?

带有自定义按钮的 ExtJs 消息框

ExtJs弹出窗口

ExtJS让被遮盖的窗体显示在最前面以及解决Ext.MessageBox提示框被TabPanel覆盖的方法转