2013-02-19 2 views
0

Кто-нибудь знает, как вы можете успешно назвать суперкласс в ext js 3.4? В моем примере кода я не могу заставить суперкласс работать на панели.как вызвать суперкласс в ext js 3.4 внутри переменной

MyWindow = Ext.extend(MyWindowUi, { 
    initComponent: function() { 
     MyWindow.superclass.initComponent.call(this); 
     this.createTextField(); 
    }, 
    createTextField : function() { 
     var p = new Ext.Panel({ 
      title: 'somepanel', 
      initComponent: function() { 
       console.log('init component'); 
       console.log(this); 
       this.superclass.initComponent.call(this); //NOT WORKING?? 
      } 
     }); 
     this.add(p); 
    } 
}); 

ответ

0

Попробуйте Ext.Panel.superclass.initComponent.call(this) вместо этого.

+0

Я пробовал использовать суперкласс, но это не отображало панель. Ext.Panel.prototype.initComponent.call (this); работал на меня. – chriscrossweb

0

Это не работает, потому что вы не вызываете initComponent Ext.Panel при создании p. Если вы собираетесь переопределить метод с вызовом суперкласса предыдущего метода, Ext.extend будет более чистым, если вам не нужны трюки.

Вы также могли бы сделать что-то вроде:

createTextField : function() { 
    var p = new Ext.Panel({ 
     title: 'somepanel' 
    }), 
    oldInit = p.initComponent; 

    p.initComponent = function() { 
     console.log('init component'); 
     console.log(this); 
     oldInit.call(this); 
    } 

    this.add(p); 
} 

Или что-то вроде:

createTextField : function() { 
    var p = new Ext.Panel({ 
     title: 'somepanel', 
     initComponent: function() { 
      console.log('init component'); 
      console.log(this); 
      Ext.Panel.prototype.initComponent.call(this); 
     } 
    }); 
    this.add(p); 
} 

Но они оба некрасиво имы.

+0

Спасибо! супер, опция: Ext.Panel.prototype.initComponent.call (this); прекрасно работает! – chriscrossweb

Смежные вопросы