extjs4 - 将自定义组件添加到容器中

时间:2012-05-02 19:17:16

标签: javascript extjs extjs4

我正在尝试将自定义组件添加到ExtJS4容器中。但是,当尝试在onRender方法中向容器添加项目时,我收到错误:

'无法从AbstractContainer中的doLayout读取属性'layoutBusy'的undefined'。未定义componentLayout属性。

Ext.define('App.view.dashboard.RightContainer', {   
    extend: 'Ext.container.Container',
    uses: [
        'App.view.Component1',
        'App.view.Component2'
    ],

    alias: 'widget.dashboardright',
    layout: 'fit',
    border: 0,

    onRender: function() {

        var self = this;
        self.callParent(arguments);

        var component1 = Ext.create('App.view.Component1', {
            height: '300px',
            flex: 1,
            incidents: self.dashboard.get('incidents')
        });

        var component2 = Ext.create('App.view.Component2', {
            flex: 1,
            contact: self.dashboard.get('contacts')
        });

        self.add(component1);
        self.add(component2);
    }
});

我尝试使用容器的项配置属性添加组件,它可以正常工作。但是,我不确定如何将自定义参数传递给组件(需要将模型实例传递给组件)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

看一下这个例子:http://jsfiddle.net/ChE59/

我正在向容器中添加3个面板并传入一些自定义属性。

Ext.define('App.view.dashboard.RightContainer', {   
    extend: 'Ext.container.Container',
    alias: 'widget.dashboardright',


    border: 0,

    constructor: function(config){
        Ext.apply(this, {
            items: [
                { 
                    title: 'panel 1'
                },
                { 
                    title: 'panel 2'
                },
                {
                    title: config.customParameter
                }
            ]     
        });

       this.callParent(arguments);        
    }
});


Ext.widget('dashboardright', {
    renderTo: Ext.getBody(),
    customParameter: 'custom parameter'
});

(如果你有更多的组件,合适的布局不是一个好的选择)