0

プロジェクトで mixins(EXT Js 4) を使用しました。私は次の構造を持っています。次の機能を持つクラス A とクラス B という名前の 2 つのクラス。

Ext.define('ClassA', {        
    classAFunction: function() {      
       alert("ClassAFunction in class A");        
    }        
});

Ext.define('ClassB', {        
    classBFunction: function() {      
       alert("ClassBFunction in class B");        
    },

    classAFunction: function() {      
       alert("ClassAFunction in class B");        
    }           

});

私のコントローラーでは、次のコードに示すように、ミックスインを使用してコントローラーの機能を拡張しました。

Ext.define(Site_Controller', {
extend: 'Ext.app.Controller',

views: [
    'ui.Site_View'
],

mixins: {
   classA: 'ClassA',        
   classB: 'ClassB'

},

init: function() {
    this.control({
        'MainPanel button[action=save]':{
            click: this.CreateSite
        }
    });
},

CreateSite: function() {

  alert("HELLO");
  this.classAFunction;
  this.classBFunction;
}

});

ビューに表示されているボタンをクリックすると、コントローラの createsite メソッドが呼び出されます。そのため、createsite メソッドが最初に呼び出されたときに「HELLO」が表示され、classAFunction が呼び出されて「クラス A の ClassAFunction」が表示されます。だからそれはclassA関数を呼び出しますしかし、私はclassBに存在するClassAFunctionを呼び出したいです。extjsでは、どうすればこれを実現できますか。

前もって感謝します。

4

1 に答える 1

1

ミックスインにアクセスして、関数を直接呼び出すことができます

this.mixins.classB.classAFunction.call(this);
于 2013-05-13T04:54:44.877 に答える