Extjs: не компонентный селектор запросов возвращает 0 вместо N элементов

#javascript #extjs #component-query

#javascript #extjs #компонент-запрос

Вопрос:

У меня есть 6 контейнеров с cls: tipoDocumento contrato :

             {
                xtype: 'container',
                layout: 'vbox',
                align: 'center',
                hidden: true,
                cls: 'tipoDocumento contrato',
                listeners: {
                    click: {
                        element: 'el',
                        fn: function (e, t) {
                            alert("FIRMAR")
                        }
                    },
                    mouseover: {
                        element: 'el',
                        fn: function (e, t) {
                            this.addCls('rowGridAzul')
                        }
                    },
                    mouseout: {
                        element: 'el', //bind to the underlying el property on the panel
                        fn: function (e, t) {
                            this.removeCls('rowGridAzul')
                        }
                    }
                },
                items: [
                    {
                        xtype: 'image',
                        src: 'img/custom/XL_firmar.png',
                        width: 66,
                        height: 66,
                        cls: 'imagen_elegir_tipo_documento'
                    },
                    {
                        xtype: 'label',
                        layout: 'fit',
                        text: lang.getString('FIRMAR'),
                        width: 66,
                        cls: 'textoElegirTipoDocumento'
                    }
                ]
            },
 

и только 5 cls: tipoDocumento .

Когда я использую первый ComponentQuery возвращает 6 элементов с ‘contrato’ в их классе. Но когда я использую второй ComponentQuery возвращает 0 элементов вместо 5 элементов, у которых есть только ‘cls: tipoDocumento’.

 Ext.ComponentQuery.query('#listadoTiposDeDocumento')[0].query("container[cls~=contrato]");

Ext.ComponentQuery.query('#listadoTiposDeDocumento')[0].query("container:not[cls~=contrato]");
 

cls этих элементов будут динамическими, так что это единственный способ, которым я вижу это, но я делаю что-то не так, и я этого не вижу.

Ответ №1:

Я полагаю, что вам не хватает круглых скобок. Это должно быть

 Ext.ComponentQuery.query('#listadoTiposDeDocumento')[0].query("container:not([cls~=contrato])");
 

Смотрите документацию