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

Extjs 访问相邻组件/字段的最佳方式,extjs,extjs4,extjs4.1,Extjs,Extjs4,Extjs4.1,我正在寻找一种方法来访问组件/字段,这些组件/字段要么与访问组件/字段位于同一个项目数组中,要么仅位于同一个父项目数组中(最后一个只是一个选项) 在ExtJS3中,只需在所有者容器中定义一个ref,这很容易,但我在ExtJS4中没有找到类似的内容 我知道我可以使用Ext.ComponentQuery()或快捷方式up()/down(),甚至Ext.getCmp(),但它们都不是我想要的,因为它们只是执行一堆代码,而ref是一种非常简单的方法。 是的,我知道使用ComponentQuery比使用硬

我正在寻找一种方法来访问组件/字段,这些组件/字段要么与访问组件/字段位于同一个项目数组中,要么仅位于同一个父项目数组中(最后一个只是一个选项)

在ExtJS3中,只需在所有者容器中定义一个
ref
,这很容易,但我在ExtJS4中没有找到类似的内容

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

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


它们在文档中有描述。

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

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

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

此处
fieldLabel
属性用于缩小字段选择范围,但您可以使用任何属性。因此,如果您使用属性
ref
构造一个字段,那么您可以使用它来选择您的字段,就像您在
ComponentQuery

中使用它一样。我在控制器中一直使用ref:我没有提到控制器,因为我没有使用它们。我知道他们知道有裁判系统,但那不是我说的。。。所以这根本没有帮助+1,谢谢你的回复,是的,这似乎适合我的需要。即使@dbrin answers包含几乎相同的内容,我也会将他的答案标记为正确(他用一个例子解释了这个问题),因为我不知道你们中谁先回答了。谢谢接受!作为第一名,我也将回答+1 geronimos。谢谢!你们看到过JSFIDLE问题吗?我找到了另一种访问相邻组件的方法,这正是我所寻找的。因此,我删除了你的“正确答案”。我可以自由地评论为什么我的新方法可能是错误的。结果表明,这两种方法几乎相同,我再次检查了你的答案。但现在我觉得新的更瘦。