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 相关文章推荐
JScript中的undefined和"undefined"的区别
Mar 08 Javascript
用javascript实现给图片加链接
Aug 15 Javascript
jQuery.clean使用方法及思路分析
Jan 07 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
值得分享的bootstrap table实例
Sep 22 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
Jun 03 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
Oct 25 Javascript
element上传组件循环引用及简单时间倒计时的实现
Oct 01 Javascript
JS函数内部属性之arguments和this实例解析
Oct 07 Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 Javascript
微信小程序云开发实现增删改查功能
May 17 Javascript
详细聊聊vue中组件的props属性
Nov 02 Vue.js
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使用ereg验证文件上传的方法
2014/12/16 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
Python抽象类的新写法
2015/06/18 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
道德演讲稿
2014/05/21 职场文书
学习作风建设心得体会
2014/10/22 职场文书
教师见习总结范文
2015/06/23 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
浅析Python OpenCV三种滤镜效果
2022/04/11 Python