Extjs实战(Extjs+Spring+Hibernate+dwr)章二:控件的组件化(三)通常问题

       接上一篇(http://blog.csdn.net/nanxiaotiantian/article/details/9369709)组件化讲:有的童鞋在组件化的时候,通常会这样做:

Ext.namespace('Ext.left');
Ext.left.LeftPanel = Ext.extend(Ext.Panel, {
        items:[{...},{....}]
	initComponent : function() {
		Ext.left.LeftPanel.superclass.initComponent.call(this, arguments);
        }
})

     大家观察上面的类,在类里面我们添加了配置项:items:[],这是在用面向过程的思想编写面向对象的代码(我在说什么呢?),这是错误的,要在我们建立的panel里面添加自己想要的内容是通过在构造函数(不明白什么是构造函数的看我的上一篇文章)里面添加这条语句:this.add(.......);括号里面是自己写的panel。

        具体代码如下:

Ext.namespace('Ext.left');
Ext.left.LeftPanel = Ext.extend(Ext.Panel, {
	initComponent : function() {
		Ext.left.LeftPanel.superclass.initComponent.call(this, arguments);
		// 需要判断用户角色
		var loginName;
		var role;
		DWREngine.setAsync(false);
		sessionService.getSession("uname", function(data) {
					loginName = data;
				});
		managerService.getManagerRoleByLoginName(loginName, function(data) {
					role = data;
				});
		DWREngine.setAsync(true);
		if (role == '1') {
			this.add(this.getOneTreePanel());
			this.add(this.getFourTreePanel());
			this.add(this.getTwoTreePanel());
		} else if (role == '2') {
			this.add(this.getOneTreePanel());
		} else if (role == '3') {
			this.add(this.getFourTreePanel());
		} else {
			Ext.Msg.alert('提醒', '你已登出系统,请重新操作');
			window.location.href = 'login.jsp';
		}

	},

	getOneTreePanel : function() {
		return this.treeOnePanel || (function() {
			this.treeOnePanel = new Ext.tree.TreePanel({
						title : '订单管理',
						collapsible : true,
						xtype : 'treepanel',
						width : 200,
						autoScroll : true,
						split : true,
						rootVisible : false,
						loader : new Ext.tree.TreeLoader(),
						root : new Ext.tree.AsyncTreeNode({
									expanded : true,
									children : [{
												text : '全部订单',
												leaf : true,
												iconCls : 'plugs',
												listeners : {
													"click" : this.qureyAllOrder
												}
											}, {
												text : '新增订单',
												iconCls : 'addorder',
												leaf : true,
												listeners : {
													"click" : this.addNewOrder
												}
											}, {
												text : '订单计划',
												iconCls : 'orderplan',
												leaf : true,
												listeners : {
													"click" : this.carsPlan
												}
											}]
								})

					});
			return this.treeOnePanel;
		}.createDelegate(this)());
	},
	getTwoTreePanel : function() {
		return this.treeTwoPanel || (function() {
			this.treeTwoPanel = new Ext.tree.TreePanel({
						title : '系统管理',
						xtype : 'treepanel',
						width : 200,
						autoScroll : true,
						split : true,
						rootVisible : false,
						loader : new Ext.tree.TreeLoader(),
						root : new Ext.tree.AsyncTreeNode({
									expanded : true,
									children : [{
												text : '客户信息',
												leaf : true,
												iconCls : 'clientInfo',
												listeners : {
													"click" : this.clientInfo
												}
											}, {
												text : '车辆信息',
												leaf : true,
												iconCls : 'carInfo',
												listeners : {
													"click" : this.carsInfo
												}
											}]
								})

					});
			return this.treeTwoPanel;
		}.createDelegate(this)());
	},
	getFourTreePanel : function() {
		return this.treeFourPanel || (function() {
			this.treeFourPanel = new Ext.tree.TreePanel({
						title : '财务管理',
						xtype : 'treepanel',
						width : 200,
						autoScroll : true,
						split : true,
						rootVisible : false,
						loader : new Ext.tree.TreeLoader(),
						root : new Ext.tree.AsyncTreeNode({
									expanded : true,
									children : [{
												text : '财务结算',
												iconCls : 'finansettle',
												leaf : true,
												listeners : {
													"click" : this.settlementFinancial
												}
											}, {
												text : '收支明细',
												leaf : true,
												iconCls : 'plugs',
												listeners : {
													"click" : this.financialInfo
												}
											}, {
												text : '财务报表',
												iconCls : 'finangrid',
												leaf : true,
												listeners : {
													"click" : this.financialStatement
												}
											}]
								})

					});
			return this.treeFourPanel;
		}.createDelegate(this)());
	},
	getFiveTreePanel : function() {
		return this.FiveTreePanel || (function() {
			this.FiveTreePanel = new Ext.tree.TreePanel({
						title : '系统管理',
						xtype : 'treepanel',
						width : 200,
						autoScroll : true,
						split : true,
						rootVisible : false,
						loader : new Ext.tree.TreeLoader(),
						root : new Ext.tree.AsyncTreeNode({
									expanded : true,
									children : [{
												text : '新增系统用户',
												leaf : true,
												listeners : {
													"click" : this.addUser
												}
											}, {
												text : '系统信息',
												leaf : true
											}]
								})

					});
			return this.FiveTreePanel;
		}.createDelegate(this)());
	},
	/*
	 * 显示系统中所有订单的信息
	 */
	qureyAllOrder : function() {
		var allArder = new Ext.order.allOrder();
		allArder.getGridData();
	},
	/*
	 * 这个函数实现了增加新订单的功能
	 */
	addNewOrder : function() {
		var aoWin = new Ext.order.addOrderWin();
		aoWin.getFormWin();
	},
	/**
	 * 发车计划。在在发车计划的tabPanel中显示所有的已经指定好了的发车计划,并最后确定发车
	 */
	carsPlan : function() {
		var carPlan = new Ext.plan.carPlan();
		carPlan.getCarPlanInfo();
	},
	carsInfo : function() {
		var carsInfo = new Ext.cars.carsInfo();
		carsInfo.getCarsInfo();
	},
	clientInfo : function() {
		var clientInfo = new Ext.client.clientInfo();
		clientInfo.getClientInfo();
	},
	financialInfo : function() {
		var financialInfo = new Ext.finan.allFinan();
		financialInfo.getAllFiancial();
	},
	financialStatement : function() {
		var statement1 = new Ext.statement.financialSta();
	},
	addUser : function() {
		var user = new Ext.user.User();
		user.addUser();
	},
	settlementFinancial : function() {
		var sf = new Ext.finan.settlementFinan();
		sf.getAllNeedSettlemeentFiancial();
		// 一个提醒框
		Ext.example.msg('提醒', '你可以<font color="red">双击</font>财务数据进行财务结算!');
	}
});

现在清楚组件化了吧,没有?那总应该清楚怎么建立系统界面的左边菜单栏了吧,没有?额。。。。你知道那个阿狸出来卖苹果的吗?

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值