Extjs中通过Tree加载右侧TabPanel具体实现


Posted in Javascript onMay 05, 2013

最近在做一个物流管理的项目,公司必须要求用Extjs4.1来做界面,因为以前一直也没有接触过所以开发的过程中遇到了很多的困难。同时Extjs4.1的资料在网上也相对来说较少。好了,不说废话上代码:
1.左侧的功能树

Ext.define("AM.view.SystemTree", { 
extend : 'Ext.tree.Panel', 
alias : 'widget.systemTree', 
rootVisible : false,// 不展示ROOT 
displayField : 'text', 
// title:'物流运输系统', 
viewConfig : { // 具有拖拽功能 
plugins : { 
ptype : 'treeviewdragdrop' 
}, 
listeners : { // 拖拽 
drop : function(node, data, overModel, dropPosition, options) { 
alert("把: " + data.records[0].get('text') + " 移动到: " 
+ overModel.get('text')); 
} 
} 
}, 
dockedItems : [ { 
xtype : 'toolbar', 
items : [ { 
xtype : 'button', 
id : 'allopen', 
icon : 'resources/img/lock_open.png', 
text : '展开全部' 
}, { 
xtype : 'button', 
id : 'allclose', 
icon : 'resources/img/lock.png', 
text : '收起全部' 
} ] 
} ], 
root : { 
text : 'root', 
leaf : false, 
id : '0', 
children : [ { 
text : '运输管理', 
checked : false, // 显示被选中 
leaf : false, // 是否是叶子节点 
icon : 'resources/img/folder_user.png', 
id : '01', 
children : [ { 
text : '车辆信息管理', 
checked : false, 
icon : 'resources/img/report_edit.png', 
leaf : true, 
id : 'vehiclelist',//主要的要点在这里,这里的id要指定为你要打开的那个视图的别名 
}] 
}] 
} 
});

要点介绍
•tree一定不要忘记添加别名alias
•设置树形结构的子节点的id值为你需要在右侧显示的view的别名alias(重要) ------可参考下方的view代码
2.需要打开的对应的view
Ext.define("AM.view.transportation.VehicleList",{ 
extend:'Ext.grid.Panel', 
alias:'widget.vehiclelist', //这里一定要设置别名 
id:'vehiclelist', 
store:'VehicleStore', 


......中间代码省略 
columns : [ 
{text:'车辆编号',dataIndex:'vehicleNo', 
field:{ 
xtype:'textfield', 
allowBlank:false 
} 
}, 
{text:'车辆描述',xtype:'templatecolumn', 
tpl:'车辆的编号为{vehicleNo} 所在地区为{vehicleArea}' 
} 
], 
initComponent:function(){ 
this.callParent(arguments); 
} 
});

3.建立一个右侧的TabPanel
Ext.define('AM.view.TabPanel',{ //主页面的tab面板 
extend: 'Ext.tab.Panel', 
alias:'widget.tabpanel', 
closeAction: 'destroy', 
defaults :{ 
bodyPadding: 10 
}, 
items: [{ 
title: '主页', 
autoLoad:'content.jsp'
//只有一个基本的panel 
}], 
});

4.设置点击tree的触发事件
'systemTree':{ 
itemclick:function(tree,record,item,index,e,options){ 
var tabs = tree.ownerCt.ownerCt.ownerCt 
.child('#center-grid').child("#tabpanel"); 
//获取当前点击的节点 
var treeNode=record.raw; 
var id = treeNode.id; 
var text=treeNode.text; 
//获取点击的树节点相同的tab标签 
var tab = tabs.getComponent(id); 
if(!tab){//如果不存在 
tabs.add({//用点击树的节点的ID、text新建一个tab 
id:id, 
closable: true, 
title:text, 
iconCls:id, 
xtype:id//将tree设置好的id对应的TabPanel中去,相当与把对应的view填充到TabPanel中 
}).show(); 
}else{//如果存在 
tabs.setActiveTab(tab);//Active 
} 
} 
},

结果上效果图:
Extjs中通过Tree加载右侧TabPanel具体实现
总结:Extjs做出来的效果确实很炫,但是学起来也有一定的难度,特别是比较新的版本,网上很难找到什么好的教程。还好我们有API,可以多对着API中的例子进行练习,这样掌握起来也很快。最近才接触Extjs,希望各位大神不要吐槽!
Javascript 相关文章推荐
用jQuery实现检测浏览器及版本的脚本代码
Jan 22 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 Javascript
使用javascript提交form表单方法汇总
Jun 25 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
Nov 26 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 Javascript
AngularJS基础 ng-copy 指令实例代码
Aug 01 Javascript
原生js实现验证码功能
Mar 16 Javascript
微信小程序中setInterval的使用方法
Sep 29 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
js实现随机抽奖
Mar 19 Javascript
jquery高效反选具体实现
May 05 #Javascript
Jquery为a标签的href赋值实现代码
May 03 #Javascript
5秒后跳转效果(setInterval/SetTimeOut)
May 03 #Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 #Javascript
jquery移动listbox的值原理及代码
May 03 #Javascript
使用Java实现简单的server/client回显功能的方法介绍
May 03 #Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
May 03 #Javascript
You might like
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
Vue程序调试的方法
2019/06/17 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
python学生管理系统代码实现
2020/04/05 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
使用Pycharm分段执行代码
2020/04/15 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
abstract class和interface有什么区别
2013/08/04 面试题
物理专业大学生职业生涯规划书
2014/02/07 职场文书
班组长竞聘书
2014/03/31 职场文书
大学生简短的自我评价
2014/09/12 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
敬老院活动感想
2015/08/07 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫