首页 > 代码库 > 跟我一起学extjs5(31--加入模块和菜单定义[4前台通过ajax来调用数据与展示])

跟我一起学extjs5(31--加入模块和菜单定义[4前台通过ajax来调用数据与展示])

跟我一起学extjs5(31--加入模块和菜单定义[4前台通过ajax来调用数据与展示])


        上一节已经把到现在为止的后台做好了,启动tomcat ,在浏览器中打入网址:http://localhost:8888/app/applicationinfo.do,就可以取得系统参数值。下面看一下在chrome调试器中的结果。


        到此为止,后台暂告一段落,又要开始对前台的extjs的程序进行修改了。
        首先要修改的是MainModel.js,在此js文件中加入构造函数:
			constructor : function() {
				Ext.log('MainModel constructor');
				var me = this;
				// 这一句是关键,如果没有的话,this还没有初始化完成,下面的Ext.apply(me.data,....)这句就会出错
				this.callParent(arguments);
				// 同步调用取得系统参数
				Ext.Ajax.request({
							url : 'applicationinfo.do',
							async : false, // 同步
							success : function(response) {
								var text = response.responseText;
								// 将字段串转换成本地变量
								var applicationInfo = Ext.decode(text, true);
								// 把从后台传过来的参数加入到data中去
								Ext.apply(me.data, applicationInfo);
							}
						});
			}

        由于后台传送过来的data中的属性名称和原来写在data里的属性不一致,因此要修改Top.js和Bottom.js。(数据库的表的字段我都是用tf_开头,只是为了区分这是一个数据库里的字段而己。在看前台的代码时也能知道,所有tf_开头的变量都是从数库里读出来的)。
        Top.js更改为如下:

/**
 * 系统主页的顶部区域,主要放置系统名称,菜单,和一些快捷按钮
 */
Ext.define('app.view.main.region.Top', {

			extend : 'Ext.toolbar.Toolbar',

			alias : 'widget.maintop', // 定义了这个组件的xtype类型为maintop

			uses : ['app.ux.ButtonTransparent', 'app.view.main.menu.ButtonMainMenu',
					'app.view.main.menu.SettingMenu'],

			defaults : {
				xtype : 'buttontransparent'
			},

			style : 'background-color : #cde6c7',

			height : 40,

			items : [{
						xtype : 'image',
						bind : { // 数据绑定到MainModel中data的system.iconUrl
							hidden : '{!systemInfo.tf_iconUrl}', // 如果system.iconUrl未设置,则此image不显示
							src : '{systemInfo.tf_iconUrl}' // 根据system.iconUrl的设置来加载图片
						}
					}, {
						xtype : 'label',
						bind : {
							text : '{systemInfo.tf_systemName}'
						},
						style : 'font-size:20px;color:blue;'
					}, {
						xtype : 'label',
						style : 'color:grey;',
						bind : {
							text : '({systemInfo.tf_systemVersion})'
						}
					}, '->', {
						xtype : 'buttonmainmenu',
						hidden : true,
						bind : {
							hidden : '{!isButtonMenu}'
						}
					}, ' ', ' ', {
						text : '首页',
						glyph : 0xf015,
						handler : 'onHomePageButtonClick'
					}, {
						xtype : 'settingmenu'
					}, {
						text : '帮助',
						glyph : 0xf059
					}, {
						text : '关于',
						glyph : 0xf06a
					}, '->', '->', {
						text : '搜索',
						glyph : 0xf002
					}, {
						text : '注销',
						glyph : 0xf011
					}, {
						glyph : 0xf102,
						handler : 'hiddenTopBottom',
						tooltip : '隐藏顶部和底部区域',
						disableMouseOver : true
					}]

		});

        Button.js更改为如下:
/**
 * 系统主页的底部区域,主要放置用户单位信息,服务单位和服务人员信息
 */
Ext.define('app.view.main.region.Bottom', {

			extend : 'Ext.toolbar.Toolbar',

			alias : 'widget.mainbottom',

			uses : ['app.ux.ButtonTransparent'],

			defaults : {
				xtype : 'buttontransparent'
			},

			style : 'background-color : #f6f5ec;',

			items : [{
						bind : {
							text : '{userInfo.tf_userdwmc}'
						},
						glyph : 0xf0f7
					}, {
						bind : {
							text : '{userInfo.tf_departmentName}'
						}
					}, {
						bind : {
							text : '用户:{userInfo.tf_userName}'
						},
						glyph : 0xf007
					}, '->', {
						bind : {
							text : '{serviceInfo.tf_serviceDepartment}'
						},
						glyph : 0xf059

					}, {
						bind : {
							text : '{serviceInfo.tf_serviceMen}'
						}
					}, {
						bind : {
							text : '{serviceInfo.tf_serviceTelnumber}'
						},
						glyph : 0xf095
					}, {
						bind : {
							hidden : '{!serviceInfo.tf_serviceEmail}', // 绑定值前面加!表示取反,如果有email则不隐藏,如果email未设置,则隐藏
							text : '{serviceInfo.tf_serviceEmail}'
						},
						glyph : 0xf003,
						handler : function(button) {
							// 发送邮件
							var vm = button.up('app-main').getViewModel();
							var link = "mailto:" + vm.get('serviceInfo.tf_serviceEmail')
									+ "?subject=" + vm.get('userInfo.tf_userdwmc')
									+ vm.get('userInfo.tf_userName') + " 关于 "
									+ vm.get('systemInfo.tf_systemName') + " 的咨询";
							window.location.href = http://www.mamicode.com/link;>
        以过以上修改,就可以完成系统的top 和  bottom中一些信息的更新的。启动tomcat ,在浏览器中打入:http://localhost:8888/app/,会生成如下界面:


      其中的系统名称,用户单位及操作员,服务单位及联系方式都是从后台取过来的。另外单击“电子邮件”那个链接,可以直接转到发送邮件的程序。



        下一节中把菜单更新一下,发布源代码。



跟我一起学extjs5(31--加入模块和菜单定义[4前台通过ajax来调用数据与展示])