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 相关文章推荐
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
关于Javascript与iframe的那些事儿
Jul 04 Javascript
get(0).tagName获得作用标签示例代码
Oct 08 Javascript
针对初学者的jQuery入门指南
Aug 15 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
Dec 08 Javascript
VUE中的无限循环代码解析
Sep 22 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
Sep 20 Javascript
vue+Element-ui前端实现分页效果
Nov 15 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结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
php安装swoole扩展的方法
2015/03/19 PHP
php中memcache 基本操作实例
2015/05/17 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python线程详解
2015/06/24 Python
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python用模块pytz来转换时区
2016/08/19 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
python实现网页自动签到功能
2019/01/21 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
秘书专业自荐信范文
2013/12/26 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
评职称个人总结
2015/03/05 职场文书
建党伟业观后感
2015/06/01 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python