实现“Extjs中通过Tree加载右侧TabPanel”需要以下步骤:
实现“Extjs中通过Tree加载右侧TabPanel”需要以下步骤:
- 创建一个Ext.tree.Panel,用于显示树形结构,其中需要配置store,root等属性。
示例代码:
Ext.create('Ext.tree.Panel', {
store: yourTreeStore,
root: {
text: 'Root',
expanded: true,
children: yourTreeData
},
listeners: {
itemclick: function(tree, node) {
// TODO: load tab panel based on selected node
}
}
});
其中,yourTreeStore
指定了树形结构的数据源,yourTreeData
指定了树形结构的初始数据,itemclick
事件监听器可以在树节点被点击时触发,并执行加载右侧TabPanel的操作。
- 创建一个Ext.TabPanel,用于显示右侧的Tab。在
itemclick
事件监听器中,可以通过add()
方法向TabPanel中添加新的Tab,并指定Tab所需的配置信息。在TabPanel中加载组件时,可以使用Ext.ComponentQuery
查找已注册的组件,或者使用直接创建组件对象的方式。
示例代码:
var tabPanel = Ext.create('Ext.TabPanel', {
items: [
{
title: 'Tab 1',
html: 'Content of Tab 1'
}
]
});
Ext.create('Ext.tree.Panel', {
store: yourTreeStore,
root: {
text: 'Root',
expanded: true,
children: yourTreeData
},
listeners: {
itemclick: function(tree, node) {
if (node.get('leaf')) {
var id = node.get('id');
var title = node.get('text');
var tab = tabPanel.child('#tab_' + id);
if (!tab) {
tab = tabPanel.add({
xtype: 'panel',
title: title,
closable: true,
id: 'tab_' + id,
html: 'Loading ' + title + '...'
});
var panel = Ext.create(node.get('xtype'), node.get('config'));
// Load content of tab
tab.setLoading(true);
panel.on('afterrender', function() {
tab.setLoading(false);
tab.add(panel);
});
}
tabPanel.setActiveTab(tab);
}
}
}
});
在上述示例代码中,我们先创建一个TabPanel,并添加了一个默认的Tab。在itemclick
事件监听器中,我们在用户首次点击一个节点时创建新的Tab,并向Tab中添加组件。如果用户再次点击相同的节点,则直接激活该Tab,而不是再次创建新的Tab。在创建Tab时,我们设置了closable
属性为true
,允许用户关闭Tab。在加载Tab的内容时,我们使用了setLoading(true)
和setLoading(false)
方法来显示和隐藏Tab的加载状态。
沃梦达教程
本文标题为:Extjs中通过Tree加载右侧TabPanel具体实现
基础教程推荐
猜你喜欢
- 关于Java 中 Future 的 get 方法超时问题 2023-01-08
- 用简单的代码来实现文件上传 2024-01-09
- SpringBoot工程打包与运行的实现详解 2023-03-07
- Spring-Task定时任务的使用介绍 2023-07-01
- Quarkus集成open api接口使用swagger ui展示 2022-10-24
- java开源项目jeecgboot的超详细解析 2023-06-17
- Java使用POI导出Excel(二):多个sheet 2023-06-06
- Spring myBatis数据库连接异常问题及解决 2022-11-29
- 关于Spring Boot内存泄露排查的记录 2023-01-13
- shenyu怎么处理sign鉴权前置到网关 2023-04-16