Extjs中通过Tree加载右侧TabPanel具体实现_Javascript教程-查字典教程网
Extjs中通过Tree加载右侧TabPanel具体实现
Extjs中通过Tree加载右侧TabPanel具体实现
发布时间:2017-01-14 来源:查字典编辑
摘要:最近在做一个物流管理的项目,公司必须要求用Extjs4.1来做界面,因为以前一直也没有接触过所以开发的过程中遇到了很多的困难。同时Extjs...

最近在做一个物流管理的项目,公司必须要求用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做出来的效果确实很炫,但是学起来也有一定的难度,特别是比较新的版本,网上很难找到什么好的教程。还好我们有API,可以多对着API中的例子进行练习,这样掌握起来也很快。最近才接触Extjs,希望各位大神不要吐槽!

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类