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 ...
随机推荐
- struts2.5能不能再恶心点
Caused by: java.lang.IllegalArgumentException: unknown reserved key '_typeConverter' at ognl.OgnlCon ...
- struts2.1.6教程四、OGNL与ValueStack(VS)
1.值栈入门 下面我们建立struts2ognl项目来练习ognl的使用. 步骤一.搭建strust2的开发环境 步骤二.建立LoginAction,主要代码如下: package com.asm; ...
- 1.搭建Maven 多模块应用 --Intellij IDEA 2016.3.5
1.打开IDEA,file->new ->project 新建工程 2.建成的项目如下图,然后新建java class 模块: 右击工程名->new -> Module 3. ...
- 【持续集成】GIT+jenkins+snoar——jenkins发布php、maven项目
一.持续集成 1.1 什么是持续集成? continuous integration (CI),持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员,每天至少集成一次,也就意味着 ...
- vue组件之间的通信以及如何在父组件中调用子组件的方法和属性
在Vue中组件实例之间的作用域是孤立的,以为不能直接在子组件上引用父组件的数据,同时父组件也不能直接使用子组件的数据 一.父组件利用props往子组件传输数据 父组件: <div> < ...
- Ubuntu上配置SQL Server Always On Availability Group(Configure Always On Availability Group for SQL Server on Ubuntu)
下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...
- php微信支付问题之 cURL error 60: SSL certificate: unable to get local issuer certificate
cacert.pem(点击下载) 解决办法:比如我本地安装的是wamp,将cacert.pem文件放在这个文件夹下面D:\wamp\bin\php\php5.5.12\ext 如果安装的phpStud ...
- 用border或者div制作三角形等图形
一般情况下, 我们设置盒子的宽高度, 及上下左右边框, 具体代码如下: 通过上述代码,div的具体样式如下: 现在在上面基础上, 我们把div的宽高度都设为0时, 现在我们再次查看效果,如下图: 这时 ...
- Promise (1) 初步接触
总想着王者荣耀排位赛再提升个等级就弃掉游戏好好学习,然而打了两个周也没升上去,看来是应该换个方向发挥了. 最近看了<javascript Promise迷离书>,对Promise的理解颇有 ...
- 浅谈Fastfds+nginx结合_单机
一.环境 centos6.8 x64 IP:192.168.134.128 所需软件包: libfastcommon-1.0.7.zip,FastDFS_v5.05.tar.gz,nginx-1.7 ...