实例化initComponent中的对象以在项

时间:2016-10-05 15:02:26

标签: extjs extjs4 extjs4.2

我一直遇到这个问题。我有一个定义了'items'的自定义组件。我希望有人使用我的组件,但定义一些配置值,(即我想要一个构建器用于我的小部件!)。

假设我有这样的组件。我希望通过'someArgumentPassedInAsConfig'传递一个参数,并且我希望在项目树中的某些项目对象上设置此参数。

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的唯一方法吗?

1 个答案:

答案 0 :(得分:3)

如果这是您正在寻找的内容,则声明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...'
    }]
});

https://fiddle.sencha.com/fiddle/1i07