免责声明:我对ExtJS(版本5.01)相对较新。我希望能够与一些ExtJS专家联系,指出我正确的方向:
在initComponent
配置中指定items
方法 时,我收到错误消息。下面的代码生成错误:
"未捕获的TypeError:无法读取属性' items'未定义"
当初始组件'错误消失。北儿童小组的功能被注释掉了。我感觉我在初始化顺序上遗漏了一些东西。
问:如何在<{1}}配置中指定子项目的initComponent
方法?
items
答案 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的区别,因为该函数有时也很方便)。