Extjs 如何将Ext.ComponentQuery.query与嵌套属性一起使用

Extjs 如何将Ext.ComponentQuery.query与嵌套属性一起使用,extjs,sencha-touch,Extjs,Sencha Touch,如何在Sencha Touch中使用具有嵌套属性的Ext.ComponentQuery.query e、 g 这让我犯了“意外错误” 鉴于: Ext.define('SomeView', { xtype : 'someview', config : { categoryCfg : { id : 5, name : 'someName' } } }); 这可能吗 谢谢。虽然没有完全回答这

如何在Sencha Touch中使用具有嵌套属性的Ext.ComponentQuery.query

e、 g

这让我犯了“意外错误”

鉴于:

Ext.define('SomeView', {
    xtype : 'someview',
    config : {
        categoryCfg : {
            id   : 5,
            name : 'someName' 
        }
    }
});
这可能吗


谢谢。

虽然没有完全回答这个问题,但你可以做一些变通,让它发挥作用

您可以向nestedConfig添加更新方法,如下所示

Ext.define('myCoolClass', {
    config : {
        nestedConfig : {
            nestedId : 5
        },

        nestedId : null
    },

    updateNestedConfig: function (nestedConfig) {
        if (nestedConfig.nestedId) {
            this.setNestedId(nestedConfig.nestedId);
        }
    }
});
通过这样做,您现在可以访问普通组件查询属性

Ext.ComponentQuery.query('[nestedId=555]')

举个例子。如果你看一看Sencha源代码,他们会很像在NavigationView和TabPanels中那样使用它,虽然没有完全回答这个问题,但是你可以做一些工作来让它工作

您可以向nestedConfig添加更新方法,如下所示

Ext.define('myCoolClass', {
    config : {
        nestedConfig : {
            nestedId : 5
        },

        nestedId : null
    },

    updateNestedConfig: function (nestedConfig) {
        if (nestedConfig.nestedId) {
            this.setNestedId(nestedConfig.nestedId);
        }
    }
});
通过这样做,您现在可以访问普通组件查询属性

Ext.ComponentQuery.query('[nestedId=555]')

举个例子。如果你看一看Sencha源代码,他们会很像在NavigationView和TabPanels中那样使用它,虽然没有完全回答这个问题,但是你可以做一些工作来让它工作

您可以向nestedConfig添加更新方法,如下所示

Ext.define('myCoolClass', {
    config : {
        nestedConfig : {
            nestedId : 5
        },

        nestedId : null
    },

    updateNestedConfig: function (nestedConfig) {
        if (nestedConfig.nestedId) {
            this.setNestedId(nestedConfig.nestedId);
        }
    }
});
通过这样做,您现在可以访问普通组件查询属性

Ext.ComponentQuery.query('[nestedId=555]')

举个例子。如果你看一看Sencha源代码,他们会很像在NavigationView和TabPanels中那样使用它,虽然没有完全回答这个问题,但是你可以做一些工作来让它工作

您可以向nestedConfig添加更新方法,如下所示

Ext.define('myCoolClass', {
    config : {
        nestedConfig : {
            nestedId : 5
        },

        nestedId : null
    },

    updateNestedConfig: function (nestedConfig) {
        if (nestedConfig.nestedId) {
            this.setNestedId(nestedConfig.nestedId);
        }
    }
});
通过这样做,您现在可以访问普通组件查询属性

Ext.ComponentQuery.query('[nestedId=555]')

举个例子。如果你看一看Sencha源代码,他们会像在NavigationView和TabPanels中一样使用它,这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:

Ext.define('SomeView', {
   xtype : 'someview',
   config : {
       categoryCfg : {
           id   : 5,
           name : 'someName' 
       }
   },

   hasCategoryId: function (id) {
       return this.getCategoryCfg().id == id;
   }
});
然后您可以进行如下查询:

Ext.ComponentQuery.query('someview{hasCategoryId(1)}');


注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为结果集是按顺序由每个选择器过滤的,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。

这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:

Ext.define('SomeView', {
   xtype : 'someview',
   config : {
       categoryCfg : {
           id   : 5,
           name : 'someName' 
       }
   },

   hasCategoryId: function (id) {
       return this.getCategoryCfg().id == id;
   }
});
然后您可以进行如下查询:

Ext.ComponentQuery.query('someview{hasCategoryId(1)}');


注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为结果集是按顺序由每个选择器过滤的,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。

这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:

Ext.define('SomeView', {
   xtype : 'someview',
   config : {
       categoryCfg : {
           id   : 5,
           name : 'someName' 
       }
   },

   hasCategoryId: function (id) {
       return this.getCategoryCfg().id == id;
   }
});
然后您可以进行如下查询:

Ext.ComponentQuery.query('someview{hasCategoryId(1)}');


注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为结果集是按顺序由每个选择器过滤的,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。

这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:

Ext.define('SomeView', {
   xtype : 'someview',
   config : {
       categoryCfg : {
           id   : 5,
           name : 'someName' 
       }
   },

   hasCategoryId: function (id) {
       return this.getCategoryCfg().id == id;
   }
});
然后您可以进行如下查询:

Ext.ComponentQuery.query('someview{hasCategoryId(1)}');


注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为每个选择器都会按顺序过滤结果集,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。

这样做的标准方法是添加自定义伪类匹配器:

Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
    var result = [],
        c, i, len;

    for (i = 0, len = components.length; i < len; i++) {
        c = components[i];

        if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
            result.push(c);
        }
    }

    return result;
}

查看更多的方法来剥猫皮。

这样做的标准方法是添加自定义伪类匹配器:

Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
    var result = [],
        c, i, len;

    for (i = 0, len = components.length; i < len; i++) {
        c = components[i];

        if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
            result.push(c);
        }
    }

    return result;
}

查看更多的方法来剥猫皮。

这样做的标准方法是添加自定义伪类匹配器:

Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
    var result = [],
        c, i, len;

    for (i = 0, len = components.length; i < len; i++) {
        c = components[i];

        if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
            result.push(c);
        }
    }

    return result;
}

查看更多的方法来剥猫皮。

这样做的标准方法是添加自定义伪类匹配器:

Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
    var result = [],
        c, i, len;

    for (i = 0, len = components.length; i < len; i++) {
        c = components[i];

        if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
            result.push(c);
        }
    }

    return result;
}

查看更多的方法来掩饰这只猫。

拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值……顺便说一句,按照惯例,它应该是“mycolclass”;)拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值……顺便说一句,按照惯例,它应该是“mycolclass”;)拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值……顺便说一句,按照惯例,它应该是“mycolclass”;)拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值…顺便说一句