Ext常用开发基础知识
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常用开发基础知识的更多相关文章
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- [No0000138]软件开发基础知识
1. 本文目的 本文目的在于,介绍软件开发的各种基础知识 以实现,看了之后,对于软件开发的很多领域的基础知识有所了解 如此在进行后续的真正的软件开发时,遇到各种细节知识,才会明白由来和背景知识 第 1 ...
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...
- IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...
- 3D开发基础知识和简单示例
引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...
- IOS开发基础知识碎片-导航
1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...
- iOS开发——总结篇&IOS开发基础知识
IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...
- Web开发基础知识
综述 最近开始Java Web方面的工作,千里之行始于足下,我们在开发过程中要善于总结自己遇到的问题.善于管理一些优秀的代码片段.本文的主要内容是Web开发的基础知识,对于大牛来说可以忽略,对于初入W ...
随机推荐
- 求序列的和,杭电0j-2058
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=2058 [Problem Description] Given a sequence 1,2,3,... ...
- ar1220f-s四条拨号光纤做的策略路由实现负载均衡
acl number 3001 //内网数据流不需被重定向到外网出口. rule 5 permit ip source 192.168.0.0 0.0.255.255 destination 19 ...
- SpringMVC中的java.lang.ClassNotFoundException: org.aspectj.weaver.BCException 调试过程记录
报错原因 上文本描述 java.lang.NoClassDefFoundError: org/aspectj/weaver/BCException at java.lang.Class.getDecl ...
- Java源码学习 -- java.lang.StringBuilder,java.lang.StringBuffer,java.lang.AbstractStringBuilder
一直以来,都是看到网上说“ StringBuilder是线程不安全的,但运行效率高:StringBuffer 是线程安全的,但运行效率低”,然后默默记住:一个是线程安全.一个线程不安全,但对内在原因并 ...
- 五、 创建连接串连接本地数据库(ASP.NET MVC5 系列)
1. 创建连接串连接本地SQLServer数据库 上节讲到MovieDBContext类,这个类的作用是连接数据库并将Movie对象迁移到数据库记录中.不过你会问一个问题:如何知道这个对象将连接哪个数 ...
- 写给Android App开发人员看的Android底层知识(5)
(十)Service Service有两套流程,一套是启动流程,另一套是绑定流程.我们做App开发的同学都应该知道. 1)在新进程启动Service 我们先看Service启动过程,假设要启动的Ser ...
- SSH实现无密码验证登录
http://blog.csdn.net/houqd2012/article/details/8544517
- Linux盘符绑定槽位
服务器下的硬盘主有机械硬盘.固态硬盘以及raid阵列,通常内核分配盘符的顺序是/dev/sda./dev/sdb- -.在系统启动过程中,内核会按照扫描到硬盘的顺序分配盘符(先分配直通的,再分配阵列) ...
- opencv基础到进阶(1)
Opencv是一个用户基础非常多的视觉开发库,可以用来实现人脸识别等功能,由于涉及到大量的调用与计算,所以对硬件的条件要求很高,并且还需要时时刻刻注意内存溢出这个问题,怎么样?很刺激吧. 从这篇文章开 ...
- 容器常用操作 - 每天5分钟玩转 Docker 容器技术(25)
前面讨论了如何运行容器,本节学习容器的其他常用操作. stop/start/restart 容器 通过 docker stop 可以停止运行的容器. 容器在 docker host 中实际上是一个进程 ...