项目配置中的EXTJS内联initComponent方法

时间:2014-09-02 04:40:05

标签: javascript extjs components

免责声明:我对ExtJS(版本5.01)相对较新。我希望能够与一些ExtJS专家联系,指出我正确的方向: 在initComponent配置中指定items方法 时,我收到错误消息。下面的代码生成错误:

"未捕获的TypeError:无法读取属性' items'未定义"

当初始组件'错误消失。北儿童小组的功能被注释掉了。我感觉我在初始化顺序上遗漏了一些东西。

:如何在<{1}}配置中指定子项目initComponent方法?

items

1 个答案:

答案 0 :(得分:1)

简短回答:您无法为孩子定义initComponent,因为您无法在其他任何地方执行任何操作。

InitComponent在组件的实例“MyApp.view.TestView&#39;已创建(您只使用Ext.define在此处定义)。可以使用Ext.create('MyApp.view.TestView',{创建它,也可以创建另一个将此组件添加为项目的视图,或者通过派生另一个组件(extend:'MyApp.view.TestView')来创建。

当MyApp.view.TestView&#39; MyApp.view.TestView&#39;时,也会创建所有子组件。因为子节点上的initComponent函数是多余的,因为没有父节点就不能创建子节点,所以父节点的initComponent可以用于你想要在子节点的initComponent中做的所有事情。 / p>

如果你需要......要在项目可以添加之前计算,您将按以下步骤进行:

Ext.define('MyApp.view.TestView', {
    extend: 'Ext.panel.Panel',
    title: 'Parent',
    height: 300,
    layout: 'border',

    initComponent: function(){
        var me = this,
            tf = Ext.getCmp("someTextField"),
            myTitle = (tf?tf.getValue():'');
        Ext.applyIf(me,{
            items: [{
                xtype: 'panel',
                region: 'north',
                title: myTitle,
            }]
        });
        this.callParent(arguments);
    }
});

请参考文档Ext.applyIf究竟是什么(以及它与Ext.apply的区别,因为该函数有时也很方便)。