本文基于ext-6.0.0

一、写login页

  1、在view文件夹中创建login文件夹,在login中创建文件login.js和loginController.js(login.js放在classic/view/login,loginController.js放在app/view/login)

  2、在app.js中禁用  mainView: 'Learning.view.main.Main'

  

  3、在login.js中写页面

    ①创建窗口  ②写依赖、配置  ③写登录的表单和按钮

Ext.define('FirstTest.view.login.login', {
extend: 'Ext.window.Window',
xtype: 'login', requires: [
'Ext.form.Panel',
'FirstTest.view.login.loginController'
], controller:'login', bodyPadding: 10,
title:'用户登录', closable:false,//窗口是否可关闭
autoShow:true,//windows默认是隐藏,要设置为显示 items: {
xtype:'form',
reference: 'form',
items: [{
xtype:'textfield',
name: 'username',
fieldLabel: '用户名',
allowBlank: false
},{
xtype:'textfield',
name: 'password',
fieldLabel: '密码',
allowBlank: false
}],
buttons: [{
text:'登录',
formBind: true,//按钮是否可用取决于form
listeners:{
click: 'onLoginClick'
}
}]
}
});

  4、在loginController.js中写登录按钮的onLoginClick事件

    ①在localStorage中记录登录状态(写入TutorialLoggedIn:true)  ②destroy登录页  ③create首页

Ext.define('FirstTest.view.login.loginController',{
extend:'Ext.app.ViewController',
alias:'controller.login',
onLoginClick: function() { // Set the localStorage value to true
localStorage.setItem("TutorialLoggedIn", true); // Remove Login Window
this.getView().destroy(); // Add the main view to the viewport
Ext.create({
xtype: 'app-main'
}); }
})

  5、添加启动逻辑到Application.js(app/Application.js)

  ①判断是否登录(通过判断localStorage中的TutorialLoggedIn是否存在),若登录则打开首页,否则打开登录页

Ext.define('FirstTest.Application', {
extend: 'Ext.app.Application', name: 'FirstTest', stores: [
// TODO: add global / shared stores here
], views: [
'FirstTest.view.login.login',
'FirstTest.view.main.Main'
], launch: function () {
// TODO - Launch the application var loggedIn; // Check to see the current value of the localStorage key
loggedIn = localStorage.getItem("TutorialLoggedIn"); // This ternary operator determines the value of the TutorialLoggedIn key.
// If TutorialLoggedIn isn't true, we display the login window,
// otherwise, we display the main view
Ext.create({
xtype: loggedIn ? 'app-main' : 'login'
});
}, onAppUpdate: function () {
Ext.Msg.confirm('Application Update', 'This application has an update, reload?',
function (choice) {
if (choice === 'yes') {
window.location.reload();
}
}
);
}
});

  

  6、在main.js中添加Viewport插件

plugins: 'viewport',

   这个不加,登录后就是一片空白。

----------------------------------------到这里,整个登录就写好啦。下面写一下怎么注销。----------------------------------------------

二、注销

  1、写一个注销按钮

{
xtype:'button',
text:'注销',
iconCls:'x-fa fa-power-off',
handler: 'onClickButton'
}

  2、在MainController.js中写注销的方法onClickButton

  onClickButton: function () {
// Remove the localStorage key/value
localStorage.removeItem('TutorialLoggedIn'); // Remove Main View
this.getView().destroy(); // Add the Login Window
Ext.create({
xtype: 'login'
});
},

到此,登录注销就都写好了。

Extjs6(二)——用extjs6.0写一个系统登录及注销的更多相关文章

  1. 一起学习造轮子(二):从零开始写一个Redux

    本文是一起学习造轮子系列的第二篇,本篇我们将从零开始写一个小巧完整的Redux,本系列文章将会选取一些前端比较经典的轮子进行源码分析,并且从零开始逐步实现,本系列将会学习Promises/A+,Red ...

  2. 从0写一个Golang日志处理包

    WHY 日志概述 日志几乎是每个实际的软件项目从开发到最后实际运行过程中都必不可少的东西.它对于查看代码运行流程,记录发生的事情等方面都是很重要的. 一个好的日志系统应当能准确地记录需要记录的信息,同 ...

  3. 用extjs6.0写一个点击新建窗口的功能

    一.写一个按钮 注意id { id: 'ListEdit', text:'编辑', iconCls:'x-fa fa-edit' } 二.写新建的页面 下面我新建的是表单,有几点需要注意的: ① 因为 ...

  4. 记录二:tensorflow2.0写MNIST手写体

    最近学习神经网络,tensorflow,看了好多视频,查找了好多资料,感觉东西都没有融入自己的思维中.今天用tensorflow2.0写了一个MNIST手写体的版本,记录下学习的过程. 复现手写体识别 ...

  5. 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端

    前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...

  6. 浅析MyBatis(二):手写一个自己的MyBatis简单框架

    在上一篇文章中,我们由一个快速案例剖析了 MyBatis 的整体架构与整体运行流程,在本篇文章中笔者会根据 MyBatis 的运行流程手写一个自定义 MyBatis 简单框架,在实践中加深对 MyBa ...

  7. Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互

    框架的东西太复杂也难以讲通,直接上代码: 一.首先得配置环境 和导入必要的jar包 有一些重要的如下: Filter文件夹下的SafetyFilter.java   model文件夹下的 Global ...

  8. Vue.js写一个SPA登录页面的过程

    技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cooki ...

  9. Spring Security 实战干货:从零手写一个验证码登录

    1. 前言 前面关于Spring Security写了两篇文章,一篇是介绍UsernamePasswordAuthenticationFilter,另一篇是介绍 AuthenticationManag ...

随机推荐

  1. MegaCli 安装过程

    首先说下自己遇到的坑: 百度搜索了一篇关于安装 MegaCli 的文章,于是乎就开始安装,装完之后获取不到 raid 的信息,后来发现是版本问题,就又搜索了一堆文章,最后搞定了 [root@web-0 ...

  2. 安装SVN报无法访问windows installer服务。

    第一步:点击开始--运行,输入:cmd 第二步:输入regsvr32 msi.dll然后回车,会提示成功. 第三步:点击开始--运行,输入:services.msc按回车 第四部:调到页面后找到Win ...

  3. 3301: [USACO2011 Feb] Cow Line

    3301: [USACO2011 Feb] Cow Line Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 82  Solved: 49[Submit ...

  4. 10分钟精通SharePoint - SharePoint定位

    平台 – "一栋楼房的框架结构" 扩展 – "用户可以根据自己需要随意装修房间"集成 – "插拔式的系统集成能力"业务– "既是全 ...

  5. X64系统下IIS运行ASP网站HTTP500错误 【安装FoxMail Server时出现】

    错误如上 解决办法 使用管理员模式运行CMD 输入cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitA ...

  6. UIImageView帧动画相关属性和方法

    @property(nonatomic,copy) NSArray *animationImages; 需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @propert ...

  7. JSON与JAVA的数据转换

    http://developer.51cto.com/art/200906/129090.htm java.lang.ClassNotFoundException: net.sf.json.JSONA ...

  8. IDEA 编译等级与源代码等级不一致问题

    错误:Error:java: javacTask: source release 1.7 requires target release 1.7 原因:javac编译时指定的字节码版本低于了1.7版本 ...

  9. block、块级作用域

    block:语句块 (或其他语言中的 复合语句) 用来组织零个或多条语句. 包含在{ }里面 通常在流程控制语句 (如 if, for, while)中使用 块级作用域:通过var声明的变量没有块级作 ...

  10. React虚拟DOM具体实现——利用节点json描述还原dom结构

    前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其 ...