zoukankan      html  css  js  c++  java
  • [ExtJS5学习笔记]第十一节 Extjs5MVVM模式下系统登录实例

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38815923

    实例代码下载地址: http://download.csdn.net/detail/sushengmiyan/7817549

    本文作者:sushengmiyan

    ------------------------------------------------------------------------------------------------------------------------------------

    暂时完成效果图如下:

    1.登录界面



    输入任意用户名与密码(暂时没有设置登录验证等,后期添加),点击用户登录进入主页面


    在左下角,显示了你刚才输入的用户名,实现了数据的传输。


    代码模块展示如下:

    app.js

    /*
     * This file is generated and updated by Sencha Cmd. You can edit this file as
     * needed for your application, but these edits will have to be merged by
     * Sencha Cmd when upgrading.
     */
    Ext.application({
        name: 'oaSystem',
    
        extend: 'oaSystem.Application',
        
        //autoCreateViewport: 'oaSystem.view.main.Main',
    	
        //-------------------------------------------------------------------------
        // Most customizations should be made to oaSystem.Application. If you need to
        // customize this file, doing so below this section reduces the likelihood
        // of merge conflicts when upgrading to new versions of Sencha Cmd.
        //-------------------------------------------------------------------------
    
    });
    
    application.js

    /**
     * The main application class. An instance of this class is created by app.js when it calls
     * Ext.application(). This is the ideal place to handle application launch and initialization
     * details.
     */
    Ext.define('oaSystem.Application', {
        extend: 'Ext.app.Application',
        
        name: 'oaSystem',
        uses:['oaSystem.SimData', 'Ext.ux.ajax.*'],
        views: [
            // TODO: add views here
        ],
    
        controllers: [
            'Root'
            // TODO: add controllers here
        ],
    
        stores: [
            // TODO: add stores here
        ],
        
        launch: function () {
            // TODO - Launch the application
    		//服务器傀儡,模拟真实世界中服务器交换
    		//oaSystem.SimData.init();
    		//console.log('launch begin');
    		//this.callParent()
    		Ext.ux.ajax.SimManager.init().register({
    		  '/authenticate':
    		  {
    			type: 'json',
    			data: function(ctx){
    			  return Ext.apply({}, true);
    			}
    		  }
    		});
        }
    });
    

    login.js

    Ext.define(
      'oaSystem.view.login.Login',
      {
    	requires:['oaSystem.view.login.LoginController'],
        extend: 'Ext.window.Window',
        controller: 'login',
    	closable: false,
    	resizable : false,
    	modal: true,
    	//draggable: false,
    	autoShow: true,
    	title: '用户登录---OA办公系统',
    	glyph: 'xf007@FontAwesome',	
    	items:[{
    		xtype:'form',//父窗体
    		reference: 'form',
    		bodyPadding: 20,
    		items:[{
    			xtype: 'textfield',
    			name: 'username',
    			labelWidth: 50,
    		    fieldLabel: '用户名',
    			allowBlank: false,
    			emptyText: '用户名或邮箱地址'
    		  },{
    			xtype: 'textfield',
    			name: 'password',
    			labelWidth: 50,
    			inputType: 'password', 
    		    fieldLabel: '密  码',
    			allowBlank: false,
    			emptyText: '请输入您的密码'
    		  }]
    	}],
        buttons: [{
    			    name: 'registbutton',
    			    text: '用户注册',
    				glyph: 'xf118@FontAwesome'
    			  },{
    			    name: 'loginbutton',
    			    text: '用户登录',
    				glyph: 'xf110@FontAwesome',
    				region: 'center',
    				listeners:{
    				  click: 'onLoginbtnClick'//单击事件 调用LoginConroller.js中的onLoginbtnClick函数
    				}
    			  }]
      }
    );
    logincontroller.js

    Ext.define(
      'oaSystem.view.login.LoginController',
      {
        extend: 'Ext.app.ViewController',
        alias: 'controller.login',
    
       //用户登录按钮事件处理
       onLoginbtnClick: function(){
            var form = this.lookupReference('form'); 
    		if (form.isValid()) {
    		  this.login({
    			data: form.getValues(),
    			scope: this,
    			success: 'onLoginSuccess',
    			failure: 'onLoginFailure'
    		})}
        },
    
        onLoginFailure: function() {
            // Do something
            Ext.getBody().unmask();
        },
    
        onLoginSuccess: function(logname, logpass) {
    		console.log('登录成功,用户名: ' + logname);
    		console.log('登录成功,密  码: ' + logpass);
            this.fireViewEvent('login', logname);
            //var org = this.lookupReference('organization').getSelectedRecord();
           // this.fireViewEvent('login', this.getView(), user, org, this.loginManager);
        },
    
        login: function(options) {
            Ext.Ajax.request({
                url: '/authenticate',
                method: 'GET',
                params: options.data,
                scope: this,
                callback: this.onLoginReturn,
                original: options
            });
        },
    /**
        applyModel: function(model) {
            return model && Ext.data.schema.Schema.lookupEntity(model);
        },
    */		
        onLoginReturn: function(options, success, response) {
            options = options.original;
            //var session = this.getSession(),
            //    resultSet;
            
            if (success) {
    			console.log('log in success');
    			/**
                resultSet = this.getModel().getProxy().getReader().read(response, {
                    recordCreator: session ? session.recordCreator : null
                });
                    
                if (resultSet.getSuccess()) {
                    Ext.callback(options.success, options.scope, [resultSet.getRecords()[0]]);
    				/*/
    				console.log(response);
    				Ext.callback(options.success, options.scope, [options.data.username, options.data.password]);
                    return;
                //}
            }
    
            //Ext.callback(options.failure, options.scope, [response, resultSet]);
        }
      }
    );

    main.js
    Ext.define(
      'oaSystem.view.main.Main',
      {
    	  extend: 'Ext.container.Viewport',
    	  uses:['oaSystem.view.main.region.Top', 'oaSystem.view.main.region.Bottom'],
    	  layout: { type: 'border' },
    	  viewModel: { type: 'main' },
    	  items: [{
    			 xtype: 'maintop',
    			 region: 'north'
    		  },
    		  {
    			 xtype: 'mainbottom',
    			 region: 'south',
    			 bind: '你好,{currentUser}'
    		  },
    		  {
    		    xtype: 'panel'
    	      }],
    	  
    	  initComponent: function(){
    	  //设置图标文件,设置后可以使用glyph属性
    	    Ext.setGlyphFontFamily('FontAwesome');
    	    this.callParent();
    	  }
      }
    
    );
    
    root.js

    /**
     * The main application controller. This is a good place to handle things like routes.
     * 这是主程序的控制器,这里适合做类似路由转发这样的事情
     */
    Ext.define('oaSystem.controller.Root',
    	{
          extend: 'Ext.app.Controller',
          uses: ['oaSystem.view.login.Login','oaSystem.view.main.Main'],
        /**
         * 初始化事件
         */
    	  onLaunch: function () {
    	    var session = this.session = new Ext.data.Session();
    	    if (Ext.isIE8) {
    		  Ext.Msg.alert('亲,本例子不支持IE8哟');
    		  return;
    	    };
    		
    	    this.login = new oaSystem.view.login.Login({
                session: session,
                listeners: {
                    scope: this,
                    login: 'onLogin'
                }});
    	  },
        /**
         * logincontroller 的 "login" 事件回调.
         * @param user
         * @param loginManager
         */
        onLogin: function (username, loginController) {
            this.login.destroy();
    		this.user = username;
    		console.log('username: ' + username);
    		this.showUI();
        },
    
        showUI: function(){
    	  
    	  console.log('show ui started');	
    	  //显示主界面
    	  this.viewport =  new oaSystem.view.main.Main(
    		  {   //用户信息传入视图         
    		      viewModel: {
                  data: 
    			    {
                        currentUser: this.user
                    }
                  }
    		  }
    	  );
    	}
      });
    

    实例代码打包下载地址:http://download.csdn.net/detail/sushengmiyan/7817549
    使用方法:

    1.第一步:使用sencha cmd 创建项目 名称需要注意 输入为oaSystem
       我使用的命令如下:sencha -sdk  E:openSrcext-5.0.0 generate app oaSystem E:workspacesmyeclipse2014csdn
    如果不太清楚sencha cmd的命令参数,建议先阅读 http://blog.csdn.net/sushengmiyan/article/details/38313537

    2.第二步:使用sencha app build 命令构建应用程序,使用sencha web start 测试是否成功。
    建议先阅读:http://blog.csdn.net/sushengmiyan/article/details/38331347


    3.将刚才新建目录下的app文件夹全部删除,将下载的压缩文件解压缩,直接解压缩到项目目录即可,重新build运行。




  • 相关阅读:
    记录下平台多种语言加密算法实施的历程
    Php AES加密、解密与Java互操作的问题
    Tomcat服务器常用配置和HTTP简介
    淘宝IP地址查询
    linux下hexdump和od命令:显示文件十六进制格式
    技术讨论 | 简谈渗透测试各阶段我常用的那些“神器”
    串口发送数据速度
    在Qt示例项目的C ++ / QML源中的//! [0]的含义是什么?
    C++ 函数参数中“ *&代表什么? ”
    c++中三种参数引用方式
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152510.html
Copyright © 2011-2022 走看看