我有按钮id = 'someid'
,我可以通过Ext.getCmp('someid')
...找到它
有没有办法为该按钮设置某种“extraId”,并通过“extraId”找到该按钮?
我有按钮id = 'someid'
,我可以通过Ext.getCmp('someid')
...找到它
有没有办法为该按钮设置某种“extraId”,并通过“extraId”找到该按钮?
问题是您想在哪里搜索以获取您的项目。
另一种方式可能是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性能好。
您可以通过执行搜索它Ext.ComponentQuery
。
将在链接页面上的控制台中运行的示例:
Ext.ComponentQuery.query('button[text=OK]')
您可以替换text=OK
为您正在搜索的属性。
我无权访问 ExtJS 4 API 文档,但我知道在 3.X 和以前的版本中有一些其他方法可以在不使用 DOM ID 的情况下获取对组件的引用。
如果您的组件是表单或表单面板的一部分,您应该可以访问名为 findField() 的方法。它继承自基本形式。此方法可以使用 id、dataIndex、name 或 hiddenName 来获取对组件的引用。
还有一个名为 findByType(xtype) 的辅助方法,您可以使用它来尝试查找您的按钮。另一种选择是扩展您用来放置可用作参考的唯一属性的按钮。
id 的替代方法是 itemId,它仅限于定义它的容器的范围。因此,在这种情况下,不需要像在 id 的情况下那样定义全局唯一的 itemId。我们可以使用组件查询来获取具有 itemId 的组件对象。请点击此链接,我在该链接中发布了有关如何使用 itemId 及其好处的信息。 http://jksnu.blogspot.in/2012/11/use-itemid-instead-of-id.html