messageBox 上的 ExtJS callParent 显示方法不起作用

ExtJS callParent on messageBox show method not working

在 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 没有传递给父 class 方法!

Fiddle: https://fiddle.sencha.com/#view/editor&fiddle/3deb

想通了。

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