跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块])

跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块])

前几节处理好了后台,现在又要处理前台了。首先是要修改菜单的选择事件,在创建一个module的时候将 moduleName参数传递进去。

修改MainController.js中的函数:

			// 选择了主菜单上的菜单后执行
			onMainMenuClick : function(menuitem) {
				var maincenter = this.getView().down('maincenter');

				maincenter.setActiveTab(maincenter.add({
							xtype : 'modulepanel',
							// 将当前的选中菜单的 "模块名称" 加入到参数中
							moduleName : menuitem.moduleName,
							closable : true,
							reorderable : true
						}));
			}

然后要修改Module.js,让其能根据传进来的模块名称来进行一些相应的初始化工作。

			// 这个配置去掉,把相应的设置放在initComponent里面
			// viewModel : {
			// type : 'module'
			// },
			bind : {
				// glyph : '{tf_glyph}', // 这一个绑定是无效的,在tabPanel渲染过后,再修改这个值,将不会有任何效果。
				title : '{tf_title}' // 这个绑定是有效的,可以根据ModuleModel中的值来设置title
			},
			layout : 'border', // 模块采用border布局

			initComponent : function() {
				console.log(this.moduleName + ' 正在创建');
				// 从MainModel中取得当前模块的定义数据,包括字段和各种设置的信息

				var mainmodel = this.up('app-main').getViewModel();

				var viewmodel = new Ext.create('app.view.module.ModuleModel', {
						// 将该模块的定义信息传递给本模块的viewModel
							module : mainmodel.getModuleDefine(this.moduleName)
						});
				this.setViewModel(viewmodel);

上面的一段代码中,先去掉了 viewModel的属性的配置,然后在initComponent的时候,根据传进来的moduleName,去取得模块的所有参数,并且创建ViewModel。然后再赋给自己使用。

再修改ModuleModel.js文件改成如下,主要把data中的初始化值都删掉了,然后增加了一个constructor的构造函数,在构造函数中将模块的信息赋值到data中。

/**
 * 模块的数据模型
 */

Ext.define('app.view.module.ModuleModel', {
			extend : 'Ext.app.ViewModel',
			alias : 'viewmodel.module',

			// 在开发过程中我先用设定好的值放于data中,等以后自定义的时候,data里的值都是从后台取得的
			// 所有数据库里的字段,我都以tf_开头,只是为了表示这是从后台读取过来的

			constructor : function() {
				Ext.log('module constructor');
				var me = this;
				// 这一句是关键,如果没有的话,this还没有初始化完成,下面的Ext.apply(me.data,....)这句就会出错
				this.callParent(arguments);
				// 取得MainModel.js中取得的这个模块的的初始化信息

				console.log(this.module);
				Ext.apply(this.data, this.module)

			},

			data : {

				tf_moduleId : null, // 模块ID号:一个数字的ID号,可以根据此ID号的顺序将相同分组的模块放在一块。
				tf_ModuleGroup : null,// 模块分组:模块分到哪个组里,比如说业务模块1、业务模块2、系统设置、系统管理等。
				tf_moduleName : null, // 模块标识:系统中唯一的模块的标识
				tf_title : null,// 模块名称:能够描述此模块信息的名称。
				tf_glyph : null, // 图标字符值
				tf_shortname : null,// 模块简称:如果名称过长,有些地方可以用简称来代替。
				tf_englishName : null,// 模块英文名称:万一要制作英文版,可以用英文名称。
				tf_englishShortName : null, // 模块英文简称:可以用作生成编码字段。
				tf_description : null,// 模块描述:
				tf_remark : null,
				// 备注:

				// 下面还有若干字段未加入,以后用到的时候再加入
				tf_primaryKey : null, // 主键
				tf_nameFields : null, // 可用于描述记录的字段

				// 此模块的自定义字段,此处先用手工定义,以后换成从数据库中自动取得
				tf_fields : [],

				// 模块的grid方案,可以定义多个方案
				tf_gridSchemes : [],

				// 模块的form方案,可以定义多个方案
				tf_formSchemes : [],

				selectedNames : '' // 选中的记录的names显示在title上

			},

			formulas : {
				// 模块grid方案的选择Combo是否显示
				gridSchemeHidden : function(get) {
					return this.get('tf_gridSchemes').length <= 1;
				}

			},

			// 根据字段id,找到字段相应的定义
			getFieldDefine : function(fieldId) {
				var result = null;
				Ext.Array.each(this.data.tf_fields, function(field) {
							if (field.tf_fieldId == fieldId) {
								result = field;
								return false;
							}
						});
				return result;
			}

		})

经过以上几步的操作,可以看看结果了。在进入系统后,选择菜单中的“模块分组”菜单,会显示如下界面了:

至前,总算有了一点点的模块前后台关联了,慢慢的搭建这个平台,并且用这个平台来完成其他的设置任务。等到CRUD都做好了,就直接可以在前台来修改各种数据库里的配置信息了。

时间: 2024-10-14 06:45:04

跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块])的相关文章

跟我一起学extjs5(12--模块界面的总体设计)

跟我一起学extjs5(12--模块界面的总体设计) 上一节中设计了一些模块自定义中用到的要素,为了直观起见,这一节先建立一个模块的主界面.看过我 模块管理常规功能自定义系统的设计与实现 博客的人应该会有所了解了.一个模块的主界面是一个Grid,在其上方有个操作按钮的工具条,在左边有导航区域,在右边有一个记录明细的显示区域.下面即是一个例子: 下面我们来搭建这个界面,首先在view中建立目录module,在此目录下建立Module.js,ModuleController.js, moduleMo

springmvc maven idea 多模块开发(四):建立Web子模块

先建立web的父模块,其他子web模块建立在该父模块之下,该模块打包方式选择为pom 建立实际web模块,右键点击web-parent,建立方法同上,打包方式为war 建立好后的目录结构如下: 手工建立java和resources目录 在Project Structure中将这两个目录设置为类路径和resources路径 原文地址:https://www.cnblogs.com/simon-xie/p/9409231.html

跟我一起学extjs5(11--自定义模块的设计)

跟我一起学extjs5(11--自定义模块的设计) 从这一节开始我们来设计并完成一个自定义模块.我们先来确定一个独立的模块的所能定义的一些模块信息.以下信息只是我自己在开发过程中想到或用到的,希望有新的想法的或者有建议的跟贴回复. 一个独立模块包含以下信息: 1.模块的基本信息 模块ID号:一个数字的ID号,可以根据此ID号的顺序将相同分组的模块放在一块. 模块分组:模块分到哪个组里,比如说业务模块1.业务模块2.系统设置.系统管理等. 模块标识:系统中唯一的模块的标识,一般这个标识等同于数据库

跟我一起学extjs5(41--增加一个自定义模块(源码下载)[2销售合同加入菜单和模块展示])

跟我一起学extjs5(41--增加一个自定义模块[2销售合同加入菜单和模块展示]) 在前面一节销售合同模块的信息导入系统后,需要在菜单中加入这个模块,但是现在菜单模块没法利用此系统进行编辑(多模块的层次现在还没有加入),因此只能在数据库里加入一条记录了: 加入后,重新启动一下tomcat,进入系统,就能在菜单"合同管理"下,看到 "销售合同"的菜单条了,点击一下,看看结果吧. 以上是自动生成"销售合同"的模块界面,这个就是最初介绍的模块的列表.

跟我一起学extjs5(40--增加一个自定义模块[1建立表和bean文件])

跟我一起学extjs5(40--增加一个自定义模块[1建立表和bean文件]) 经过上面的工作,一个独立模块的CRUD已经可以运行了,为了更好的可以看到其他自定义功能,我们做一个自定义的独立模块,这个模块中包括了各种的数据类型. 新增一个"销售合同"的独立模块,模块名称为Agreement,里面包括了20几个字段,把主要的字段类型都设置了,有字符串型,整型,浮点型,金额型,日期型,布尔型,百分比,还包括计算字段. 建立表的sql语句如下: /****** 对象: Table [dbo]

跟我一起学extjs5(13--执行菜单命令在tabPanel中显示模块)

跟我一起学extjs5(13--执行菜单命令在tabPanel中显示模块) 上面设计好了一个模块的主界面,下面通过菜单命令的执行来把这个模块加入到主界面当中.在MainModule.js中有一个函数,生成了当前的菜单数据: // 根据data.systemMenu生成菜单条和菜单按钮下面使用的菜单数据 getMenus : function() { var items = []; var menuData = this.get('systemMenu'); // 取得定义好的菜单数据 Ext.A

跟我一起学extjs5(37--单个模块的设计[5取得模块列表数据])

跟我一起学extjs5(37--单个模块的设计[5取得模块列表数据]) 写了几个月,总算有点盼头了,最终要从后台取得数据了.后台的spring mvc 和 service 仅仅能简单的说说了,里面加了几十个类.有兴趣的下载了源代码自己看.以下画张通用的模块列表取数据的流程,这个流程是适用于全部的模块.我这个后台处理程序也是对全部的模块进行统一处理,包含数据查找,新增,改动,删除都是同样的. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamZvaw==

跟我一起学extjs5(30--加入模块和菜单定义[3后台系统数据的组织和生成])

跟我一起学extjs5(30--加入模块和菜单定义[3后台系统数据的组织和生成]) 对于大多web程序来说,后台是完成控制和处理的,前台就是一个展示工具,这个系统也是这样.在上一节中建立了四个模块,下面开始设计前后台的交互.将系统信息和模块.菜单信息传到前台,由前台来进行展示. 首先新建一个java bean类用来存放各种需要传到前台的数据,里面包括:系统信息.操作人员信息.服务人员信息.模块信息.菜单.现在只加入了这几个,以后还要加入各种 各样的权限设置.在com.jfok.server.co

跟我一起学extjs5(28--加入模块和菜单定义[1建立数据库和表])

跟我一起学extjs5(28--加入模块和菜单定义[1建立数据库和表]) 下面我们开始进入自定义系统的设计和各个组成部分的搭建工作. 首先在sql server中建立数据库,这里的数据的名字我定义为extjs5,然后需要建立模块的定义表,这个表里将存着系统中所有模块的定义信息.为了能有个直观的前后台的互动,先把模块和菜单这二个部分加进去,可以把菜单数据组织好后发送到前台去进行展示. 由于系统中的模块很多,需要分类,因此在先要设计一个"模块分组"的表,对于菜单也是一样,需要有一个&quo