我认为这很简单,但我不知道如何在视口区域中加载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);
}
}
});
}
Viewport剪辑:
{
region: 'center',
layout: 'fit',
items: [{
xtype: ''
}]
}
GridPanel:
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},
]
});
答案 0 :(得分:2)
首先定义一个将获取面板和视图的引用
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,假设您需要为每个记录ID添加一个网格并删除旧的
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}
}
});
请注意,所有这些代码都是未经测试的,应该只是向您展示。