Как добавить (существующую) панель в область дерева ItemClick

Я думаю, что это просто, но я понятия не имею, как загрузить существующую панель на Tree ItemClick в области окна просмотра!?

TreeController отрезан

init: function() {
    this.control({
        'treemenu': {
            itemclick: function(view, node, record, item, index, e ) {
                if(node.isLeaf()) {

                } 
            },
            itemexpand: function (t,e){
                console.log(t.data.value);
            }
        }
    });

}

Область просмотра вырезана:

{
    region: 'center',
    layout: 'fit',
    items: [{
        xtype: ''
    }]

}

Панель сетки:

Ext.define('MyProject.view.FlyerGrid', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.flyergrid',
    border:'0 0 0 0',
    title:'Flyer Übersicht',
    bbar: Ext.create('Ext.toolbar.Paging', {
        //store: store
        }),
    columns: [
        { text: 'Typ',  dataIndex: 'type',flex:1 },
        { text: 'year',  dataIndex: 'year' ,flex:1},

    ]

});

person Zwen2012    schedule 03.06.2013    source источник
comment
просто подсказка: чтобы получить больше откликов, всегда используйте по крайней мере тег extjs вместе с тегом конкретной версии. Другие вкладки, которые вы использовали, более или менее бесполезны   -  person sra    schedule 04.06.2013
comment
Хорошо, спасибо за подсказку!   -  person Zwen2012    schedule 06.06.2013


Ответы (1)


Сначала определите ссылку, которая будет получать панель и вид.

refs: [{
    ref: 'panel',
    selector: 'panel[region=center]' // you might give the panel a itemId instead of using region=center
}]

и метод контроллера, который добавит представление

showPanel: function(view, node, record, item, index, e ) {
    if(node.isLeaf) {
        var grid= this.getFlyerGrid();
        if(!grid) {
            this.getPanel().add({xtype:'flyergrid'});
        }
    }
}

В качестве альтернативного способа для ссылки вы также можете использовать Ext.ComponentQuery, скажем, если вам нужна сетка для каждого идентификатора записи и удалить старый

showPanel: function(view, node, record, item, index, e ) { 
    if(node.isLeaf) {
        var grid= Ext.ComponentQuery.query('flyergrid[itemId=record.data.id]');
        if(!grid) {
            var panel = this.getPanel();
            Ext.suspendLayouts();
            panel.removeAll();
            panel.add({xtype:'flyergrid',itemId:record.data.id});
            Ext.resumeLayouts(true);
        }
    }
}

Обновите свой контроль

this.control({
        'treemenu': { itemclick: this.showPanel}
    }
});

Обратите внимание, что весь этот код не тестировался и должен просто показать вам трюк.

person sra    schedule 04.06.2013