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

t0ybt7op  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(159)

在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

qhhrdooz

qhhrdooz1#

想通了。
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]);
   }
});

相关问题