1

例子

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

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

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

所以我想要一个ClassBwith plugins PluginA, PluginB,的实例PluginC

4

2 回答 2

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/

于 2013-03-27T11:19:49.430 回答
0

这行不通。原因,配置对象上没有属性plugins。所以PluginC从创建将不会应用于实例。

但这对我有用:

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

我正在使用 Ext 版本 4.1.1.1

于 2013-03-27T12:03:34.603 回答