2013-03-27 1 views
1

어떻게 설정 값

Ext.define('ClassA', { 
    plugins: [ 'PluginA' ] 
}); 

Ext.define('ClassB', { 
    extend: 'ClassA', 
    plugins: [ 'PluginB' ] 
}); 

Ext.create('ClassB', { 
    plugins: [ 'PluginC' ] 
}); 

그래서 플러그인 PluginA, PluginB, PluginCClassB의 인스턴스를하고 싶습니다 확장 할 수 있습니다.

+0

해서는 안 마지막이 될 'ClassC'을 사용하고 있습니다? – VisioN

+0

아니요, 그는 B 클래스의 인스턴스를 만듭니다. –

답변

2

constuctor에서 병합해야합니다.

Ext.define('ClassA', { 
    constructor: function (config) { 
     var me = this; 
     config.plugins = Ext.Array.merge(config.plugins ? config.plugins : [], ['PluginA']) 
     Ext.apply(me, config); 
     me.callParent(arguments); 
    } 
}); 

을 그리고 여기에 바이올린입니다 : 여기에 가능한 솔루션이다이 작동하지 않는 http://jsfiddle.net/johanhaest/EGMxA/

0

. 원인, 설정 개체에 plugins 속성이 없습니다. 따라서 생성 된 PluginC은 인스턴스에 적용되지 않습니다.

는 그러나 이것은 나를 위해 일한 :

constructor: function(config) { 
    this.plugins = Ext.Array.merge(this.plugins || [], [ 
     'PluginA' 
    ]); 
    this.callParent(arguments); 
} 

내가 내선 버전 4.1.1.1