Extjs 实例化initComponent中要在项中使用的对象

Extjs 实例化initComponent中要在项中使用的对象,extjs,extjs4,extjs4.2,Extjs,Extjs4,Extjs4.2,我一直遇到这个问题。我有一个定义了“items”的自定义组件。我希望有人使用我的组件,但定义一些配置值(即我希望我的小部件有一个构造函数!) 假设我有一个这样的组件。我想要一个参数通过'SomeArgumentPassedAsConfig'传递,并且我想要在items树中的某些items对象上设置该参数 Ext.define('MySuperDupeyComponent', { extend: 'Ext.panel.Panel', alias: 'widget.MySuperD

我一直遇到这个问题。我有一个定义了“items”的自定义组件。我希望有人使用我的组件,但定义一些配置值(即我希望我的小部件有一个构造函数!)

假设我有一个这样的组件。我想要一个参数通过'SomeArgumentPassedAsConfig'传递,并且我想要在items树中的某些items对象上设置该参数

Ext.define('MySuperDupeyComponent', {
    extend: 'Ext.panel.Panel',

    alias: 'widget.MySuperDupeyComponent',

    initComponent: function() {
        alert('ch --> ' + this.someArgumentPassedInAsConfig);
    },

    items: [{
        xtype: 'someWidget',
        somePropertyIwantToSet: this.someArgumentPassedInAsConfig
    }]
})
最好的方法是什么?我希望有人能够像这样使用我的组件

items: [
    {
        xtype: 'MySuperDupeyComponent',
        someArgumentPassedInAsConfig: 'Blah blah blah'
    }

是在构造函数中使用Ext.apply的唯一方法吗?

如果这是您要查找的,那么在initComponent方法中声明项应该可以工作

Ext.define('MySuperDupeyComponent', {
    extend: 'Ext.panel.Panel',

    alias: 'widget.MySuperDupeyComponent',

    initComponent: function() {
        alert('ch --> ' + this.someArgumentPassedInAsConfig);
        this.items = [{
            xtype: 'someWidget',
            somePropertyIwantToSet: this.someArgumentPassedInAsConfig
        }]
        this.callParents(arguments);
    }
})
应该允许你这样使用它

Ext.create('Ext.panel.Panel', {
    items: [{
        xtype: 'MySuperDupeyComponent',
        someArgumentPassedInAsConfig: 'Blah...'
    }]
});

我有一种奇怪的感觉,几年前我问过这个问题。好像是我干的。