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 相关文章推荐
用JSON做数据传输格式中的一些问题总结
Dec 21 Javascript
js通过地址栏给action传值(中文乱码全是问号)
May 02 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 Javascript
node模块机制与异步处理详解
Mar 13 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
vue-cli单页应用改成多页应用配置详解
Jul 14 Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
May 18 Javascript
微信小程序canvas绘制圆角base64图片的实现
Aug 18 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
js 解析 JSON 数据简单示例
Apr 21 Javascript
JavaScript对象访问器Getter及Setter原理解析
Dec 08 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
使用dump函数,给php加断点测试
2013/06/25 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php如何连接sql server
2015/10/16 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
深入理解Python对Json的解析
2017/02/14 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
python判断输入日期为第几天的实例
2018/11/13 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
轻松制作精彩视频:Animoto
2018/09/19 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
小学教师师德演讲稿
2014/05/06 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
中学生检讨书1000字
2014/10/28 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
户外活动总结
2015/02/04 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技