是否有方法可以查询xtype'yourxtype'的子组件? 例如,您有一个面板,此面板内是一个位于工具栏上的自定义xtype。
findParentByType非常适合查找,但是没有像findChildByType这样的方法。 而down方法仅适用于元素。 Ext.ComponentQuery是一个单例,但不适用于xtypes? 是否有其他方法可以从组件中查询?
答案 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')
这将返回所有类型实例的数组。