Extjs item.el未定义!如何确保我的组件已呈现,以便其他人可以调用其元素?

Extjs item.el未定义!如何确保我的组件已呈现,以便其他人可以调用其元素?,extjs,extjs4,Extjs,Extjs4,我有一个组件,它从Ext.button.button扩展而来,还有另一个组件wrappanel,它负责布置自定义按钮组件 我的问题是,wrappanel组件计算传递给它的项的宽度,并要求item.el可用项.el在渲染组件之前不可用,但渲染将延迟到所有组件就绪 如何确保子组件的.el已准备好供父组件使用?谢谢。计算子项的宽度是布局管理器的责任,而不是容器的责任。但是,根据您的ExtJS版本,如果您不熟悉代码库,那么编写自定义布局可能是一项艰巨的任务 如果您使用的是4.1.0或更高版本,请查看布局

我有一个组件,它从Ext.button.button扩展而来,还有另一个组件wrappanel,它负责布置自定义按钮组件

我的问题是,wrappanel组件计算传递给它的项的宽度,并要求
item.el
可用<代码>项.el在渲染组件之前不可用,但渲染将延迟到所有组件就绪


如何确保子组件的.el已准备好供父组件使用?谢谢。

计算子项的宽度是布局管理器的责任,而不是容器的责任。但是,根据您的ExtJS版本,如果您不熟悉代码库,那么编写自定义布局可能是一项艰巨的任务

如果您使用的是4.1.0或更高版本,请查看布局过程的最终参考指南。4.1版本标志着布局系统的巨大变化,以解决性能问题的报告,因此,如果您使用的是4.0.7或更早版本,其中的信息对您没有帮助


在我看来,4.1的布局要复杂得多,所以我建议在尝试定制之前,先尝试引导现有的布局来满足您的需求。如果您使用的是4.0.7或更早版本,则会更容易一些,因此您可能会有更大的灵活性。

尝试使用afterRender listener作为子项。您不是唯一的一个。布局上下文使调试布局问题变得非常困难,因为所有内容都已排队,因此很难检测问题实际发生的位置(
beginLayout
calculate
completeLayout
finalizeLayout
等)。还有许多令人困惑的配置,如果不了解大量特定于Ext的布局上下文知识,就无法理解这些配置。看看这些代码是否有意义。