访问相邻组件/字段的最佳方式

sra*_*sra 6 extjs extjs4 extjs4.1

我正在寻找一种方法来访问组件/字段,这些组件/字段与访问它们在同一个项目数组中,或者甚至只在同一个父项目数组中(最后一个只是一个选项).

在ExtJS3中,只需ref在所有者容器中定义一个就可以轻松实现,但我在ExtJS4中没有找到类似的东西.

我知道我可以使用Ext.ComponentQuery()或快捷方式up()/ down()甚至Ext.getCmp()但它们都不是我想要的,因为它们只是执行一堆代码,而这ref是一种简单的方法.是的,我知道使用ComponentQuery比使用硬编码引用要安全得多.但我只想知道是否有其他方法可以做到这一点.

Aci*_*ier 10

或者,对于在容器中获取下一个元素的情况,可以使用nextSiblingprevSibling.所有组件都有这些方法.在DOM结构周围走动会少一些.它们还允许选择器参数.

它们在这里的文档中描述.


dbr*_*rin 6

以下是我使用过的一些技巧:

//lookup by name
formPanel.getForm().findField('state'); 

//lookup using nextSibling/prevSibling in a fieldset or fieldcontainer
myField.ownerCt.nextSibling('textfield[fieldLabel=Description]')
Run Code Online (Sandbox Code Playgroud)

fieldLabel属性用于缩小字段选择范围,但您可以使用任何属性.因此,如果您构建一个具有属性的字段,ref则可以使用它来选择您的字段,类似于在a中使用它的方式ComponentQuery.