Ext常用开发基础知识

组件定义

	//这种方法可以缓存所需要的组件 调用起来比较方便(方法一 )
Ext.define('MySecurity.view.home.HomePanel', {
//添加需要使用的组件
requires:[
'MySecurity.store.home.AuthorityStore'
],
//继承的组件
extend: 'Ext.panel.Panel',
layout:'fit',
//自定义一个xtype 供创建 或者起识别作用
xtype: 'homePanel',
//初始化方法
initComponent : function() {
var me = this; //这里可以给me 赋值 例如组件 ,这样就可以使用 “homePanl.组件” 这样调用
me.items = [{
html:'hello'
}]; //这行代码记得添加上 否则创建失败
this.callParent(arguments);
}
}); //常用容器创建 Ext.container.Container (方法二)
this.container = Ext.create('Ext.container.Container',{
layout:{
type: 'vbox',
align : 'stretch'
},
items:[{
html:'hello'
}]
}); //增加组件(Item)
this.container.add({html:'add'})

Controller ViewModel 的使用

  • 可以在UI上直接引用View Model的值
  • 可以引用View Model 经过加工的function
  • 可以使用ViewModel的值控制UI的表现

定义viewmodel

	Ext.define('MySecurity.view.main.ViewportModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.mainviewport', data: {
// 当前在那个 UI
currentView: null,
userAccess: null,
// 版本信息
appVersion: '0.0'
},
formulas: {
hideBottomContainer: function(get){
if(this.get('userAccess'))
return !(this.get('userAccess').username == 'admin');
else
return true;
}
} });

定义Controller

	Ext.define('MySecurity.view.ViewportController', {
extend: 'Ext.app.ViewController',
alias: 'controller.viewportcontroller', init : function() {
this.control({ });
this.setData();
},
onLogoutBtnClick: function(){
var me = this;
Ext.MessageBox.confirm('Logout', 'Are you sure you would like to logout?', function(btn){
if (btn == 'yes') {
me.logout();
};
});
},
setData:function(){
var view = this.getView(),
vm = this.getViewModel();
vm.set('test', 'test'); console.log(vm.get('test'));
},
logout: function(){
var me = this,
vm = me.getViewModel();
Ext.Ajax.request({
url: '../../j_spring_security_logout',
method: 'POST',
success: function(response){
window.location.href = '../../'; },
failure: function() {
// Ext.MessageBox.alert(ALM.lblError, ALM.lblLogoutFailed+ALM.lblCheckNetworkHint);
window.location.href = '../../';
}
});
}
});

定义视图

	Ext.define('MySecurity.view.Viewport', {
extend: 'Ext.container.Viewport',
requires:[
'MySecurity.view.main.MainHeader',
'MySecurity.view.main.MainTabPanel'
],
layout:{
type:'vbox',
align :'stretch'
},
controller: 'viewportcontroller',
viewModel: {
type: 'mainviewport'
},
items: [{
xtype:'mainHeader',
height:50
},{
xtype:'mainTabPanel',
flex:1
},{
xtype: 'tbtext',
cls: 'top-user-name',
bind: {
text: '{userAccess.username}',
hidden:'{hideBottomContainer}'
}
}] });

Ajax的使用

	//POST
Ext.Ajax.request({
url:'../controller/doSomething',
method:'POST',
headers: {
myHeaderType : 'Test'
},
jsonData: {
data:{
name:'Saber',
skill:'Excalibur'
}
},
failure: function(response, opts) {
console.log('failed')
},
success: function(response){
var text = response.responseText;
var result = Ext.JSON.decode(response.responseText);
if(result.success){
//do some thing
}else{
//do some thing
}
}
}); //GET
Ext.Ajax.request({
url:'../controller/doSomething',
method:'GET',
params: {
name:'saber',
skill:'Excalibur'
},
failure: function(response, opts) {
console.log('failed')
},
success: function(response){
var text = response.responseText;
var result = Ext.JSON.decode(response.responseText);
if(result.success){
//do some thing
}else{
//do some thing
}
}
});

自定义事件:

抛出事件

	组件.fireEvent('事件名','事件源组件','param1','param2'......);

监听/处理 事件

	组件.on('事件名','处理事件方法名', scope);

	处理事件方法名:function(事件源组件,params1,params2){

    }

事件处理

	//1.使用 listeners
listeners: {
click: function() {
//do something
},
scope:me
} //2.使用handler
handler:me.functionName,
scope:me

组件查询获取

up/down/query

用以获取以调用方法的组件为标准去寻找其他组件

	Ext.dom.Element
up( selector, [limit], [returnDom] ) : HTMLElement/Ext.dom.Element down( selector, [returnDom] ) : HTMLElement/Ext.dom.Element
selector:Ext.dom.Query
默认寻找xtype :
a.down('button') 寻找a元素下 xtype为button的第一个组件 query(selector) 返回所有符合的组件 //eg:
var btn = this.buttonContainer.down('[name="saveHero"]'); var myComponents = selfView.query('[action="test"]')

getComponent

用以获取自身的子组件

	{
xtype: 'textarea',
itemId: 'comment-textarea'
} var commentTextArea = this.getComponent('comment-textarea');

getCmp

用以获取指定id的组件

	{
xtype: 'textarea',
id: 'my-textarea'
} var commentTextArea = this.getComponent('my-textarea');
commentTextArea.setValue('asasa');

Ext.fly

返回一个指定的元素,其中包含component,dom,el

	var a = Ext.fly(dom) 或 Ext.fly('domId')

	a.component.setValue(3423);

Model

Ext.data.field.Field

  • auto (Default, implies no conversion)
  • string
  • int
  • number
  • boolean
  • date

设置主键

	idProperty:'',

Store

读取数据

	this.store.loadData(data);

	this.store.load();

	this.store.add(data);

添加参数

	//1.
this.store.on('beforeload', this.onStoreBeforeload, this); onStoreBeforeload: function(store){
store.proxy.extraParams = {
name:'Saber',
skill:'Excalibur'
};
return true;
}, //2.
this.store.load({
params: {
name: 'Saber',
skill: 'Excalibur'
}
});

获取数据

	//获取所有数据
store.getRange() store.getData() //根据主键获取record
store.getById( id )

Ext常用开发基础知识的更多相关文章

  1. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...

  2. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  3. [No0000138]软件开发基础知识

    1. 本文目的 本文目的在于,介绍软件开发的各种基础知识 以实现,看了之后,对于软件开发的很多领域的基础知识有所了解 如此在进行后续的真正的软件开发时,遇到各种细节知识,才会明白由来和背景知识 第 1 ...

  4. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  5. IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路

    1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...

  6. 3D开发基础知识和简单示例

    引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...

  7. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  8. iOS开发——总结篇&IOS开发基础知识

    IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...

  9. Web开发基础知识

    综述 最近开始Java Web方面的工作,千里之行始于足下,我们在开发过程中要善于总结自己遇到的问题.善于管理一些优秀的代码片段.本文的主要内容是Web开发的基础知识,对于大牛来说可以忽略,对于初入W ...

随机推荐

  1. 使用JsonConfig控制JSON lib序列化

    将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作.JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格 ...

  2. js中的sort方法

    js中原生的sort()采用快排和插入排序算法,根据比较器对数组排序. 默认是将数组元素转为字符串,然后根据Unicode字符集编号的大小排序. charCodeAt(index) 返回指定位置字符的 ...

  3. oracle数据库常用的99条查询语句(转载)

    1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...

  4. Calendar使用

    1简单例子 package com.kungeek.tip; import java.text.SimpleDateFormat; import java.util.Calendar; import ...

  5. 详解Linux进程(作业)的查看和杀死

    目录: 引入进程 进程 线程 PS命令 TOP命令 其他查看进程命令 进程的优先级 作业控制机制 kill命令 一.引入进程 1.内存划分为:用户空间和内核空间 1.在用户空间里运行的进程,就是用户进 ...

  6. js继承之原型链继承

    面向对象编程都会涉及到继承这个概念,JS中实现继承的方式主要是通过原型链的方法. 一.构造函数.原型与实例之间的关系 每创建一个函数,该函数就会自动带有一个 prototype 属性.该属性是个指针, ...

  7. java 与操作系统同步问题(三)————父亲儿子女儿水果问题

    问题描述:父亲每次都会放一个水果在桌子上,女儿喜欢吃香蕉(只吃香蕉), 儿子喜欢吃苹果(只吃苹果).父亲每次只会随机往桌子上放一个水果(苹果或香蕉),儿子,女儿会来取.使用p.v操作来完成父亲.儿子. ...

  8. DRBD+Heartbeat+Mysql高可用读写分离架构

    声明:本案例仅为评估测试版本 注意:所有服务器之间必须做好时间同步 架构拓扑 IP信息: Heartbeat安装部署 1.安装heartbeat(主备节点同时安装) [root@master1 ~]# ...

  9. Eclipse导入项目常见问题----服务器版本问题02

    *有时导入项目时,我们打开build时会看到服务器包上有一个红色的×,和这里JRE System jar包显示的是一个样的,左侧有个红色叉: 解决办法 打开到如下界面,解决步骤如下图: 打开该界面方式 ...

  10. Coursera 机器学习笔记(七)

    主要为第九周内容:异常检测.推荐系统 (一)异常检测(DENSITY ESTIMATION) 核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非 ...