我正在寻找一种方法来访问组件/字段,这些组件/字段与访问组件相同,或者甚至只在同一父项数组中(最后一个只是一个选项)。
在ExtJS3中,只需在所有者容器中定义ref
即可轻松实现,但我在ExtJS4中找不到类似内容。
我知道我可以使用Ext.ComponentQuery()
或快捷方式up()
/ down()
甚至是Ext.getCmp()
,但它们都不是我想要的,因为它们只是执行一堆代码虽然ref
是一种简单易行的方法。
是的,我知道使用ComponentQuery比使用硬编码引用要安全得多。但我只是想知道是否有其他方法可以做到这一点。
答案 0 :(得分:9)
或者,对于获取容器中下一个元素的情况,您可以使用nextSibling
或prevSibling
。所有组件都有这些方法。在DOM结构周围走动会少一些。它们还允许选择器参数。
文档here中描述了它们。
答案 1 :(得分:6)
以下是我使用的一些技巧:
//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
中使用它的字段类似的字段。