ExtJs 4,有没有办法找到控制权? (不是“id”)

时间:2011-04-26 10:47:10

标签: javascript extjs extjs4

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

找到它

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

4 个答案:

答案 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