本文基于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. Android--多线程之Handler 前言

    前言 Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的 ...

  2. 【前端】ACE Editor 简易使用示例

    身为一个早已退役的Oier,当然忘不了当年一个个OJ页面上的代码显示和代码编辑器. 其中,洛谷使用的ACE Editor就是之一,非常的简洁美观.以及实际上在前端页面上搭建一个ACE Editor也是 ...

  3. 1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果

    1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 4 ...

  4. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建

    日常啰嗦 前面一篇文章讲了一下版本控制,但其实这一篇并没有打算讲细节的,感觉应该自己去动手弄一下,后来考虑了一下,版本控制真的挺重要的,如果自己实在搭建不好反而不去使用的话,真的有点可惜,当然这些话是 ...

  5. swift -- 代理delegate

    1.声明协议 protocol SecondDelagate { func sendValue(text : String!) -> Void } 2.声明代理属性 var delegate : ...

  6. 关于VS2013的编码的UI测试。

    1.  打开VS2013,选择文件→新建→项目 2.  弹出的选项左侧选择visual C#中的测试,中间选择框选择编码的UI测试项目,确定后就产生的测试项目. 3.  弹出框选择默认的录制操作巴拉巴 ...

  7. HTML5学习笔记<四>: 列表, 块和布局

    HTML列表 列表标签 标签 描述 <ol> 定义有序列表. <ul> 定义无序列表. <li> 定义列表项. <dl> 定义定义列表. <dt& ...

  8. 【转】Django Middleware

    Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行的.我们可以在 Middleware 这个地方把所有Request 拦截住,用我们自己的方式完成处理以 ...

  9. 简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群  群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...

  10. 浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别

    今天的工作学习之路是一个数据库的小知识,当时没有区分出所以然,特此记录分享一下子. 众所周知,数据库的表都是单独存在的,但是当我们进行联合查询(多表查询)时,我们获得数据库返回的值时就好像在一张表里一 ...