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 相关文章推荐
最近项目写了一些js,水平有待提高
Jan 31 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
jQuery实现折线图的方法
Feb 28 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
强大Vue.js组件浅析
Sep 12 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
Feb 28 Javascript
vue iview多张图片大图预览、缩放翻转
Jul 13 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
Aug 27 Javascript
layui prompt 设置允许空白提交的方法
Sep 24 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
JavaScript中layim之整合右键菜单的示例代码
Feb 06 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
第六节--访问属性和方法
2006/11/16 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
python的几种开发工具介绍
2007/03/07 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
flask入门之表单的实现
2018/07/18 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
python 如何停止一个死循环的线程
2020/11/24 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
英语翻译系毕业生求职信
2013/09/29 职场文书
材料物理专业个人求职信
2013/12/15 职场文书
校园文明倡议书
2014/05/16 职场文书
2014年共青团工作总结
2014/12/10 职场文书
故宫英文导游词
2015/01/31 职场文书
银行求职自荐信范文
2015/03/04 职场文书
针对吵架老公保证书
2015/05/08 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis