【问题标题】:Best way to access adjacent components / fields访问相邻组件/字段的最佳方式
【发布时间】:2012-10-22 20:30:45
【问题描述】:

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

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

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

【问题讨论】:

标签: extjs extjs4 extjs4.1


【解决方案1】:

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

它们在文档here 中进行了描述。

【讨论】:

  • +1 感谢您的回复,是的,这似乎适合我的需求。即使@dbrin 的答案包含几乎相同的内容,我也会将他的答案标记为正确(他用一个例子进行了解释),因为我不知道你们中的哪一个先回答了。
【解决方案2】:

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

//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 中使用它的方式。

【讨论】:

  • 感谢接受!我也会 +1 geronimos 回答,因为我是第一个。
  • 谢谢!你们看到jsfiddle问题了吗? meta.stackexchange.com/questions/153630/…
  • 我找到了另一种访问相邻组件的方法,这正是我正在寻找的。因此,我从您那里删除了“正确答案”。随意评论为什么我的新方法是错误的。事实证明,这两种方法几乎相同,我重新检查了您的答案。但就目前而言,新的对我来说看起来更瘦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多