Как получить предметы в extjs

В моем проекте я создал widget alias для приведенного ниже кода в «Просмотре» как notifications. Теперь, как получить доступ к каждому элементу в «Контроллере»?

extend: 'Ext.panel.Panel',
alias: 'widget.notifications',
layout: 'fit',
items:[{
    xtype: 'container',
    layout: {type: 'vbox', align: 'stretch'},
    items: {
        xtype: 'container',
        flex:1,
        layout: {type: 'vbox', align: 'stretch'},
        items:[{
            xtype: 'container',
            flex: 1,
            items: [{
                xtype: 'container',
                height: 20,                 
                html: "This week",                  
            },
            {
                xtype: 'container',
                flex: 1,
                layout: {type: 'vbox', align: 'stretch'},
                items: [{
                    xtype: 'container',
                    height:20,
                    html : 'show submit status here'
                },
                {
                    xtype: 'container',
                    flex: 1,
                }]
            }]
        },
        {
            xtype: 'container',
            flex: 1,
            layout: {type: 'vbox', align: 'stretch'},
            items: [{
                xtype: 'container',
                height: 20,
                html: "This month"
            },
            {
                xtype: 'container',
                flex: 1,
                layout: {type: 'vbox', align: 'stretch'},
                items: [{
                    xtype: 'container',
                    html: 'submit status of month here',
                    height: 20
                },
                {
                    xtype: 'container',
                    flex: 1,
                }]
            }]
        }]
    }
}]

Я старался:

 var notificationView = Ext.widget('NotificationView');
 var childItem = notificationView.items.items[0].items.items[0].items.items[0].items.items[0];

Что просто дает мне головную боль и много ошибок.

Я также пытался использовать ComponentQuery следующим образом:

var childItem = notificationView.ComponentQuery.query('container>container>container>container');

Который получает только первый дочерний элемент, а не другие дочерние элементы.


person Mr_Green    schedule 19.03.2013    source источник


Ответы (1)


Вы можете использовать любое произвольное свойство вашего компонента, чтобы идентифицировать его в запросе компонента. Например, если вы добавите свойство refId : 'myMonthlyStatus' в свой последний контейнер, вы сможете найти его с помощью query('container [refId=myMonthlyStatus]') из любого места.

person dbrin    schedule 19.03.2013
comment
Есть ли что-нибудь похожее на refId ? Потому что я не могу найти его. - person Mr_Green; 19.03.2013
comment
и даже если я что-то изменю в переменной notificationView, я не увижу никаких изменений в своем представлении. Я даже позвонил this.callParent(). - person Mr_Green; 19.03.2013
comment
нет свойства refId — я придумал его, чтобы показать вам, что вы можете использовать любое свойство в ComponentQuery. Перечитайте мой ответ еще раз внимательно. - person dbrin; 19.03.2013