4

我有按钮id = 'someid',我可以通过Ext.getCmp('someid')...找到它

有没有办法为该按钮设置某种“extraId”,并通过“extraId”找到该按钮?

4

4 回答 4

15

问题是您想在哪里搜索以获取您的项目。

另一种方式可能是itemId

当没有可用的对象引用时,itemId 可用作获取对组件的引用的替代方法。不要使用带有 Ext.getCmp 的 id,而是使用带有 Ext.container.Container.getComponent 的 itemId,它将检索 itemId 或 id。由于 itemId 是容器内部 MixedCollection 的索引,因此 itemId 的范围仅限于容器本地——避免与需要唯一 id 的 Ext.ComponentManager 的潜在冲突。

来源和进一步的文档:http ://docs.sencha.com/ext-js/4-0/#/api/Ext.AbstractComponent-cfg-itemId

ComponentQuery (由wombleton 提到)也是一个好方法,但可能不如itemId性能好。

于 2011-08-17T08:05:53.127 回答
8

您可以通过执行搜索它Ext.ComponentQuery

将在链接页面上的控制台中运行的示例:

Ext.ComponentQuery.query('button[text=OK]')

您可以替换text=OK为您正在搜索的属性。

于 2011-04-26T11:27:05.560 回答
2

我无权访问 ExtJS 4 API 文档,但我知道在 3.X 和以前的版本中有一些其他方法可以在不使用 DOM ID 的情况下获取对组件的引用。

如果您的组件是表单或表单面板的一部分,您应该可以访问名为 findField() 的方法。它继承自基本形式。此方法可以使用 id、dataIndex、name 或 hiddenName 来获取对组件的引用。

还有一个名为 findByType(xtype) 的辅助方法,您可以使用它来尝试查找您的按钮。另一种选择是扩展您用来放置可用作参考的唯一属性的按钮。

于 2011-04-26T13:18:27.407 回答
0

id 的替代方法是 itemId,它仅限于定义它的容器的范围。因此,在这种情况下,不需要像在 id 的情况下那样定义全局唯一的 itemId。我们可以使用组件查询来获取具有 itemId 的组件对象。请点击此链接,我在该链接中发布了有关如何使用 itemId 及其好处的信息。 http://jksnu.blogspot.in/2012/11/use-itemid-instead-of-id.html

于 2013-09-16T06:15:20.487 回答