查询具有特定xtype的子组件

时间:2014-10-08 12:52:25

标签: extjs extjs5

是否有方法可以查询xtype'yourxtype'的子组件? 例如,您有一个面板,此面板内是一个位于工具栏上的自定义xtype。

findParentByType非常适合查找,但是没有像findChildByType这样的方法。 而down方法仅适用于元素。 Ext.ComponentQuery是一个单例,但不适用于xtypes? 是否有其他方法可以从组件中查询?

4 个答案:

答案 0 :(得分:8)

yourCt.down将在组件的子级和子级中找到具有指定类型的容器的第一个实例。

yourCt.child也会这样做,但会限制容器的直接子项。

yourCt.query会在容器下方找到所有匹配组件,作为数组。

yourCt.up会找到匹配的容器的第一个

哦,Ext.ComponentQuery.query可以使用一个可选对象作为查询的起点。

这些都基于Ext.ComponentQuery

的基础(并清楚记录)

答案 1 :(得分:4)

组件查询还有一个down方法,但它仅适用于容器。组件查询在xtypes中查找没有前缀的标识符(例如“#”,“。”等),如果xtype由Ext或您自己定义,则它没有重要性。所以,请执行:

var child = yourCt.down('yourxtype');

答案 2 :(得分:2)

这对我有用

这将返回一个带有xtype的实例数组。

// inside onClick method.
 openFragment( SignupFragment.newInstance());


// This method gets invoked when a button is clicked.
 public void openFragment(Fragment fragment) {
    FragmentTransaction ft = getSupportFragmentManager()
            .beginTransaction();
    ft.replace(R.id.container,
            fragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    ft.addToBackStack(null);
    ft.commitAllowingStateLoss();
}

这只返回单个实例,即如果我们有5个xtype实例,则只返回xtype的第一个实例

Ext.ComponentQuery.query('fieldxtype')

如果您想按名称获取组件,可以使用

formpanel.down('fieldxtype')

答案 3 :(得分:1)

您可以简单地使用查询 Ext.ComponentQuery.query('myXtype')这将返回所有类型实例的数组。