Extjs4 获取items子控件时使用Ext.getCmp返回undefined

注意:使用的Extjs版本为4.2.1

我的情况发生在一个组件的子控件中获取另一个组件的子控件对其做修改时。

举例:比如panelA的items中的buttonA,获取panelB的items中的labelfieldB并修改其值,在buttonA的listeners或handler函数中使用Ext.getCmp("labelfieldB")只能返回undefined。

组件items配置中的子控件的id配置是使用"itemId",在API中找到该配置项,可以看到介绍里说道:

Instead of using an id with Ext.getCmp, use itemId with Ext.container.Container.getComponent which will retrieve itemId's or id's. Since itemId's are an index to the container's internal MixedCollection, the itemId is scoped locally to the container -- avoiding potential conflicts with Ext.ComponentManager which requires a unique id.

从上面可以看到子控件的itemId的作用域是它的容器,要通过子控件的itemId或者id获取控件要使用容器的getComponent方法。

所以最上面的例子中,buttonA获取labelfieldB的方法应该是:

Ext.getCmp("panelB").getComponent("labelfieldB")  或者

panelB.getComponent("labelfieldB")

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值