仅用于子元素的ComponentQuery选择器

ema*_*olo 1 extjs extjs4

我有一组动态组合的Controller/View,每个都有一个"选择器"列表和一个"容器",这样的容器可以有另一个选择器+容器对,依此类推.哪个是相同的根选择器+容器控制器的实例.

这是Controller的标题定义(抽象类):

Ext.define('MyApp.controller.explorer.Base', {
    extend: 'Ext.app.Controller',
    refs: [
        {ref: 'explorerContainer', selector: '[itemId="explorerContainer]'},
        {ref: 'explorerSelector', selector: '[itemId="explorerSelector]'}
    ],
Run Code Online (Sandbox Code Playgroud)

问题是我不知道ComponentQuery选择器应该只与我的控制器的子元素匹配这样的itemId.因为通过使用[itemId ="explorerContainer"]来匹配组件,它全局地这样做,回答组合树中最顶层的容器.

在之前的实验中,我使用ExtJS 3,通过myComponent.getComponent('...')访问子元素,但现在没有getComponent(),我无法在ExtJS 4中找到等价物.

提前致谢.

dbr*_*rin 7

您正在混合使用位控制器和问题中的视图.例如"我的控制器的子元素".控制器不是一个组件 - 只是事件的观察者.视图有子组件等.

你需要对Ext.ComponentQuery课程更加熟悉.您可以在应用或演示页面上使用Firebug进行实验.你只需弹出firebug控制台并键入Ext.ComponentQuery.query('panel') - 然后用你认为正确的表达式替换面板并测试它.如果您安装Illuminations For Developers插件 - 您将获得Ext组件而不是通用JS对象 - 这非常有用.

文档有一些查询示例:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.ComponentQuery.您会发现" >"符号将查询限制为直接子项.

希望这可以帮助.如果不发布更多代码,我们可以帮助您创建一些选择器.