如何扩展配置值

时间:2013-03-27 10:27:05

标签: javascript extjs extjs4

实施例

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

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

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

所以我希望ClassB的实例包含插件PluginAPluginBPluginC

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

这不起作用。因为,配置对象上没有属性plugins。因此,创建中的PluginC将不会应用于实例。

但这对我有用:

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

我正在使用Ext版本4.1.1.1