2013-03-27 120 views
1

如何延长配置值

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

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

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

所以我想有ClassB与插件PluginAPluginBPluginC一个实例。

+0

应该不是最后一个是'ClassC'? – VisioN 2013-03-27 10:32:01

+0

不,他创建了B类的一个实例。 – 2013-03-27 10:45:37

回答

2

您需要将它们合并到构造函数中。这里是一个可能的解决方案:

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