如何查看或生成任何Ext JS组件的选择器字符串?

时间:2014-01-25 17:53:25

标签: extjs extjs4

我正在尝试为组件提供一个选择器字符串。如果有一种方法可以给我这个,那真的很方便。像这样:

Ext.ComponentQuery.getSelector(component)

这将返回该组件的完全限定的选择器字符串,以便

Ext.ComponentQuery.query(Ext.ComponentQuery.getSelector(component)) === component

我还没有找到一个库方法来从组件对象中获取选择器字符串。

编辑:问题不是超级棒。假设您有一个参考Ext JS组件(按钮,字段等等)嵌套在容器,面板,网格,工具栏的层次结构中,这些都是动态的(在应用程序中以编程方式生成)有可能是一种算法为组件的祖先生成该组件的选择器。因此,使用父对象将组件返回到整个应用程序视口的根对象。我理解使用富有表现力的语法选择特定组件的方法不止一种,我不关心所有方式,只是任何方式。

2 个答案:

答案 0 :(得分:4)

不存在此类方法。这就像问“有没有一种方法来获取元素的CSS选择器?”。答案是否定的,因为您可以通过多种不同方式选择元素。

举几个例子,您可以通过以下方式获取组件:

  • ID #foo
  • xtype toolbar
  • 层次结构选择器panel > container
  • 属性[action=foo]

或上述的任何组合。

答案 1 :(得分:2)

在ExtJs框架中,不存在返回组件选择器的方法。

但是,你可以获得组件的id,它必须在整个应用程序中是唯一的,然后在选择器中使用它。每个组件都实现getId()方法,该方法返回您在创建组件时在config中定义的自动生成的唯一ID或id。

var id = component.getId();

然后你可以通过它的id获得组件:

Ext.getCmp(id);

或通过id选择器:

Ext.ComponentQuery.query('#' + id)[0];