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