【问题标题】:ExtJS callParent on messageBox show method not working消息框显示方法上的 ExtJS callParent 不起作用
【发布时间】: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

【问题讨论】:

    标签: javascript class inheritance extjs


    【解决方案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]);
       }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多