什么是Ext JS
走进Ext的世界
Ext JS是一款富客户端开发框架
它基于javascript、HTML和CSS开发而成,无需安装任何插件即可在常用浏览器中创建出绚丽的页面效果。
个人总结Ext JS的方法
- 从Extjs的视图学起
例如:窗体、表单、数等等。并且可以掌握调试工具和技巧
- 学习使用API
学会怎么查询以及使用大牛提供的接口解决常见的问题(一般我们用到的效果,大牛们在做框架的时候都想到过)
- 把Extjs的前端可视化的组件与后台连接,进行交互
我们在做各类系统的时候都要跟数据库打交道,在这个阶段主要把各个组件与数据库的交互写清楚
- 掌握理论知识--原理性东西
如:Extjs的继承机制,事件等等
- 官方提供的开发实例
如官方提供的样例掌握
Extjs核心工具方法
一、Extjs核心工具方法
1、Ext.onReady
Ext.onReady在DOM模型加载完毕后才进行操作。
优点:无需像onload事件那样,等待页面的所有资源都加载完毕后才进行操作。
"onReady方法是Ext.Loader.onReady()方法的别名"
其语法如下:
Ext.onReady(Object fn,Objet scope,Objet options)
其中:
fn:指定Ext JS和HTML页面加载完成后要执行的方法,fn参数类型为对象(必传参数);
scope:指定执行该方法的范围(可选参数);
options:指定执行一些附加选项,比如delay等(可选参数)。
2、Ext.create
Ext.create方法是创建对象的方法,
"在Ext JS 4版本之前,一直使用new关键字创建对象-- new classname([config])"
其语法如下:
Ext.create( String className, Object args)
其中:className指定要创建对象的类名,可以是类的全名、别名或者备用名;
args是一个JavaScript对象,用于向新生成的对象传入构造参数值(也称为配置选项,即为config属性指定选项传入参数值),类型为对象。
二、Ext JS 4 语法
1、配置对象
config:用于为该类指定配置选项,Ext JS会自动为config指定的选项添加setter和getter方法。
2、关于xtype
定义xtype来指定该位置使用什么组件。
定义xtype,一般使用组件的别名。
3、使用Ext.widget或者Ext.createWidget创建对象
Ext.widget的作用是使用别名来创建对象。 Ext.widget =Ext.createWidget;
其语法如下:
Ext.widget( classname,[config] )
其中: classname是对象的别名;
configs是可选参数,为对象的配置对象(config options),类型为对象。
4、使用Ext.ns或者Ext.namespace定义命名空间
Ext.namespace()方法用于创建一个或多个命名空间,命名空间可用于限定函数、类的范围和作用域,可以 很好的解决二者的同名冲突。
很多时候都会使用命名空间来组织相关类和其他类。在Extjs中,使用Ext.namespace方法可创建命名空间
其语法如下:
Ext.namespae(namespace1,namespae2,...)
其中namespace1、namespace2都是字符串数据,是命名空间的名字
5、使用Ext.define定义新类
Ext.define()方法和Ext.extend()方法都用于自定义类。
"Ext.define()方法相当于Ext.ClassManager.create()方法的别名"
"在Ext JS 3版本,定义新类使用的是Ext.extend方法(不推荐使用)"
其语法如下:
Ext.define( String className, Object properties,[Function callback] );
其中:className:用于执行自定义的类名(推荐采用与java类名相同的命名规则);
properties:新类的配置对象,对象里包含了类的属性集对象(用于为该类定义属性、方法)。
callback:回调函数,当类创建完成后执行该函数(用于指定该类创建成功的回调函数)。
注意:properties该对象可以指定任何合法的属性,以下是几种具有特殊意义的属性。
Ⅰ.self:引用当前类本身
Ⅱ.alias:为该类定义别名
Ⅲ.alternateClassName:为该类定义可选的类名
Ⅳ.config:用于为该类指定配置选项,Ext JS会自动为config指定的选项添加setter和getter方法
Ⅴ.extend:用于指定该类继承的父类
(还可以通过constructor为该类指定构造器)
Ⅵ.inheritableStatics:与statics属性相同,也用于为该类定义静态方法和静态属性,该属性的 定义的静态方法和静态属性可以被子类继承
Ⅶ.mixins:用于列出所有要被混入的类
Ⅷ.override:用于注定要覆盖的类
Ⅸ.requires:用于列出在实例化该类之前,必须预先加载的类
Ⅹ.singleton:如果该属性被设为true,则该类的实例将是单例的
ⅩⅠ.statics:为该类定义静态方法和静态属性
ⅩⅡ.uses:用于列出必须与该类同时使用的类
6、使用Ext.defer方法指定延迟执行的函数
Ext.defer()用于指定延迟执行的函数
其语法如下:
Ext.defer(Function fn,Number millis,[Object scope],[Array args])
其中:
fn参数执行需要延迟执行的函数;
millis:指定延迟多少毫秒后执行fn函数;
scope参数用于指定执行fn函数的范围;
args用于执行传入fn函数的参数;
7、Ext.apply和Ext.applyIf方法
Ext.apply()及Ext.applyIf()方法都是用于把一个对象中的属性复制到另一个对象中。
共同点:都用于实现属性复制。
不同点:
Ext.apply()将会覆盖目标对象中的属性;
Ext.applyIf()只复制目标对象中没有、而源对象中有的属性不会发生属性覆盖。
其语法如下:
Ext.apply()方法的语法格式为:
Ext.apply(Object object, Object config,Object defaults)
作用:
把config、defaults两个对象的属性复制到objet中,但是当config、default两个对象的属性值发生冲 突时,config的属性值取胜。
8、Ext.isXxx方法---用于判断是否为某某对象
Ext.isXxx()方法代表系列的方法,它们都用于判断是否为某某对象,isXxx()方法总是返回Boolean值。
9、Ext.each和Ext.iterate方法
Ext.each()方法用于遍历数组,它是Ext.Array.each()方法的别名。
Ext.iterate()方法相当于Ext.Array.each()方法和Ext.Object.each()方法“综合体”,
当被遍历的数据是数组时,Ext.iterate()方法底层调用Ext.Array.each()方法进行遍历;
当被迭代的数据是对象时,Ext.iterate()方法底层调用Ext.Object.each()方法进行遍历;
三、Ext JS扩展的工具方法---更多方法参考:Ext JS API文档
Ext JS扩展的所有工具方法都直接位于Ext命名空间下。
Ⅰ、为Array扩展的工具方法---Ext.Array工具类
JavaScript数组用做栈的两个方法如下:
①.push(ele):元素入栈,返回入栈后数组的长度。
②.pop():元素出栈,返回出栈的数组元素
JavaScript数组作为队列使用的两个方法如下:
①.unshift(ele):元素入队列,返回入对列后数组的长度。
②.shift():元素出队列,返回出队列的数组元素。
Ⅱ、为Date扩展的工具方法---Ext.Date工具类
Ext.Date为操作Date对象提供了大量的工具方法
例如:Ext.Date.format()、Ext.Date.between()两个方法
Ⅲ、为Function扩展的工具方法---Ext.Function工具类
Ext.Function为JavaScript函数新增了大量工具方法
Ⅳ、为Number扩展的工具方法---4个工具类方法
Ext.Number为JavaScript的数值类型的值
Ext.Number.constrain()工具方法---Ext.Number.constrain(20,10,30) //20截取傲10~30范围内
Ext.Number.from()工具方法---Ext.Number.from("abc","20") //字符串abc转换为数值
Ext.Number.snap()工具方法---Ext.Number.snap(23,7,10,20) //返回离23最近的7的倍数(必须在10~30之间)
Ext.Number.snap()工具方法:作用--先获取距离指定数值最近的、特殊数值的倍数,然后将得到的数值截取 到指定范围之内。
Ext.Number.toFixed()工具方法---Ext.Number.toFixed(3.2545,1) //3.2545保留1位小数点
Ⅴ、为Object扩展的工具方法---Ext.Object工具类
javaScript的对象不仅仅可以作为对象使用,还可以作为Java Map集合使用,javascript对象的每个属性名、属性值就相当于Map的key-value对(键值对)
例如:Ext.Object.each()、Ext.Object.toQueryString()、Ext.Object.fromQueryString()、Ext.Object.getKeys()、Ext.Object.getValues()等等
Ⅵ、为String扩展的工具方法---Ext.String工具类
Ext.String提供了大量工具方法来操作字符串,这些工具方法可以进一步增强字符串的功能
Ext.String.format()方法比较实用,用于将字符串中的{0}、{1}、{2}....占位符替换成实际的值。
Ⅶ、Ext.JSON方法
JSON是一种非常有用的轻量级数据交换格式。
Ext.JSON类提供了3个工具方法来完成javascript对象与JSON字符串的相互转化。
Ext.JSON.encode()工具方法---用于把javascript对象或数组转换为JSON字符串
Ext.JSON.encode()方法的别名是: Ext.encode()可直接使用
Ext.JSON.decode()工具方法---用于把JSON字符串恢复成javascript数组或对象
Ext.JSON.decode()方法的别名是: Ext.decode()可直接使用
Ext.JSON.encodeDate()工具方法---用于编码一个日期。将返回的实际字符串,插入到JSON字符串作为 文本表达式。返回的默认格式是:"yyyy-mm-ddThh:mm:ss"
Ext.JSON.encodeValue()工具方法---用于把javascript对象或数组转换为JSON字符串
Ext JS所有界面组件
1、使用Ext.container.Container--创建容器
2、使用Ext.panel.Panel--创建面板
3、使用Ext.toolbar.ToolBar--创建工具条
4、使用Ext.tab.Panel--创建Tab面板
5、使用Ext.container.Viewport--整体布局
6、使用Ext.window.Window--创建窗口
7、使用Ext.window.MessageBox--创建对话框
8、使用Ext.menu.CheckItem、Ext.menu.ColorPicker、Ext.menu.DatePicker实现特殊菜单项
9、使用Ext.Ation--创建按钮
10、使用Ext.ProgressBar--创建进度条
11、使用Ext.slider.Single--创建滑动条
12、使用Ext.Img--创建图片
13、使用Ext.Editor--创建编辑器
14、使用Ext.tip.ToolTip--创建提示
15、使用Ext.QuickTipManager和Ext.tip.QuickTip--创建提示
16、使用Ext.ux.GMapPanel实现Google地图
17、使用Ext.form.field.ComboBox--创建复合框
18、使用Ext.data.Store与Ext.data.Model管理数据
19、使用Ext.data.Proxy.Proxy和Ext.data.reader.Reader读取数据
20、使用Ext.grid.Panel--生成表格
21、使用Ext.grid.column.Column-定义列
22、使用Ext.grid.Panel显示远程数据
23、使用Ext.tree.Panel生成数
------------------------------------------------------------------------------------------------
Ext JS所有界面组件都继承了Ext.Component,
Ext.component的子类:Ext.container.Container则是其他组件的容器,用于盛装其他组件。
一、使用Ext.Component
Ext.Component是最普通、没用额外附加行为的组件,该组件原本是"一无所有"的区域----空白的区域。
样例:
<script type="text/javascript">
//创建comp容器对象
var comp = Ext.create('Ext.Component', {
html: 'Hello world!',
width: 300, //宽度
height: 200, //高度
padding: 20, //内边距
style: { //设置样式
color: '#FFFFFF',
backgroundColor:'#000000'
},
renderTo:Ext.getBody() //指定将该组件追加到<body.../>元素中
});
copm.center(); //使用容器居中
</script>
二、使用Ext.container.Container创建容器 --- 可以盛装其他组件
Ext.container.Container代表一个空白的容器,
使用场景:需要现将多个组件"组合"在一起,再将他们放在页面上显示出来。
样例:
<script type="text/script">
// 显式创建一个容器
Ext.create('Ext.container.Container', {
//指定布局方式
layout: {
type: 'hbox'
},
width: 400,
renderTo:Ext.getBody(),
border: 1,
style: {borderColor:'#000000', borderStyle:'solid', borderWidth:'1px'},
// 指定对该容器中所有添加项进行默认设置
defaults: {
labelWidth: 80,
// 隐式创建容器通过指定的xtype
xtype: 'datefield',
flex: 1,
style: {
padding: '10px'
}
},
//指定该容器包含的组件
items: [
//第2个组件,xtype是datefield,表明是一个日期选择器
{
xtype: 'datefield',
name: 'startDate',
fieldLabel: 'Start date' //开始日期
},{
xtype: 'datefield',
name: 'endDate',
fieldLabel: 'End date' //结束日期
}]
});
</script>
三、使用 Ext.panel.Panel --- 最常用的的容器类之一,Ext.window.Window和 Ext.tab.Panel、Ext.form.Panel。
Ext.panel.Panel继承了Ext.container.Container
Ext.panel.Panel容器的功能更加丰富,它可以添加标题、工具条等等,更多参照API
样例:
<script type="text/script">
Ext.onReady(funtion(){
// 创建Ext.panel.Panel容器对象
var con = Ext.create('Ext.panel.Panel', {
//指定布局方式
layout: {
align: 'center'
},
title:'查询图书'
height:280, //指定高度
width: 400, //指定宽度
renderTo:Ext.getBody(),
border: 1,
style: {borderColor:'#000000', borderStyle:'solid', borderWidth:'1px'},
// 指定对该容器中所有添加项进行默认设置
defaults: {
labelWidth: 80,
flex: 1,
style: {
padding: '10px'
}
},
//为该Panel设置工具按钮
//无须指定xtype属性,默认就是tools值,即工具按钮
tools:[
{
//指定刷新工具按钮
type:'refresh',
//工具提示
tooltip:'刷新页面',
//单击该工具按钮的事件处理函数
handler:function(event,toolEl,panel)
{
alert("用户刷新数据");
}
},
{
//指定保存工具按钮
type:'save',
//工具提示
tooltip:'保存数据',
//单击该工具按钮的事件处理函数
handler:function(event,toolEl,panel)
{
alert("用户保存数据");
}
}
],
//指定该容器包含的组件
items: [
//第1个组件,没有指定xtype,默认是panel,表明嵌套了一个Panel
{
title:'出版社信息'
height: 120, //指定高度
fieldLabel: 'Start date' //开始日期
},{
xtype: 'datefield',
name: 'endDate',
fieldLabel: 'End date' //结束日期
}]
});
});
</script>
四、使用Ext.form.Panel--表单容器
Ext.form.Panel表单面板各组件介绍
1、Ext.form.FormPanel支持的主要表单组件
ExtJS表单组件 说明 Xtype类型
Ext.form.field.CheckBox 复选框 checkboxfield
Ext.form.CheckBoxGroup 复选框组 checkboxgroup
Ext.form.field.ComboBox 下拉列表框 combo
Ext.form.field.Date 日期选择框 datefield
Ext.form.field.Display 文本显示组件 displayfield
Ext.form.field.FieldContainer 字段容器 fieldcontainer
Ext.form.field.FieldSet 字段集 fieldset
Ext.form.field.Hidden 隐藏域 hiddenfield
Ext.form.field.HtmlEditer HTML文本编辑器 htmleditor
Ext.form.Label 标签字段 label
Ext.form.field.Number 数字输入框 numberfield
Ext.form.field.Radio 单选框 radio
Ext.form.RadioGroup 单选框组 radiogroup
Ext.form.field.Spinner 微调组件 spinnerfield
Ext.form.field.TextArea 多行文本框 textareafield
Ext.form.field.Text 单行文本框 textfield
Ext.form.field.Time 时间选择框 timefield
Ext.form.field.Trigger 触发器按钮文本框 triggerfield
Ext.form.field.File 文本框上传字段 filefield
2、Ext.form.Panel主要配置项目表
配置项 类型 说明
buttons Array 一个按钮(Ext.button.Button)配置对象数组,按钮将被添加到表单页脚中
layout String 表单布局
minButtonWidth Number 表单按钮的最小宽度,默认为75px
pollForChanges Boolean 是否循环检查表单值的变化
pollInterval Number 循环检查表单值的时间间隔,默认为500ms
items Mixed 一个子元素或子元素的数组
title String 表单标题
3、Ext.form.FormPanel常用方法表
方法名 说明
checkChange:void 强制检查每个表单字段是否发生了变化
getForm():Ext.form.BasicForm 获取表单面板对应的基本表单对象
load(Object options):void 加载表单内容
startPolling(Number interval):void 开始循环检查表单值是否发生了变化
参数说明:
interval:循环检查的时间,单位ms
stopPolling:void 停止startPolling启动的内置任务
submit(Object options):void 提交表单内容
4、Ext.form.field.Base主要配置项目表
配置项 类型 说明
dirtyCls String 设置表单值被修改后的样式
fieldCls String 设置表单字段的样式,默认为“x-form-field”
focusCls String 设置表单字段获得焦点时的样式,默认为“x-form-focus”
id String 控件的唯一标识,默认系统自动生成一个唯一标识
inputId String 这个id将被应用于生成的input元素,默认情况下这个id自动生成,如果手工配置id则需保证这个id的唯一性
invalidText String 设置表单值无效且并没有提供信息时的显示文字
inputType String 字段类型,默认为text
name String 字段名,默认为undefined
readOnly Boolean 设置字段是否只读,默认为false。
Mixin:Ext.form.field.Field
disabled Boolean true则禁用组件,默认为false。禁用状态下的组件将不被提交
submitValue Boolean 设置表单字段非禁用状态下是否提交表单值,默认为true
validateOnChange Boolean 设置是否在值发生变化时立刻校验的有效性,默认为true
value Mixed 字段的初始化值
Mixing:Ext.form.Labelable
activeError String 如果设置该值,则组件第一次被渲染时该值将被作为错误信息展示,默认为undefined,组件创建之后可以使用setActiveError和unsetActiveError进行修改
activeErrorTpl Ext.XTemplate 错误信息模板
autoFitErrors Boolean 设置为true则自动调节组件体范围,以便在组件范围内显示“side”或“under”状态的错误信息,默认为true
fieldLabel String 设置字段标签,它将与labelSeparator一起被添加,它的位置尺寸决定于labelAlign,labelWidth和labelPad配置项,默认为undefined
hideEmptyLabel Boolean 设置为true则完全隐藏内容为空的标签
hideLabel Boolean 设置为true则完全隐藏表单标签(fieldLabel和labelSeparator),默认为false
labelAlign String 设置表单标签filedLabel的位置,
有效值:left:
标签在字段左边。top:
标签在字段上面。
right:标签在字段右边。
labelPad Number 设置表单标签与表单字段值之间的空白间距,默认为5px
labelSeparator String 设置表单标签与表单字段之间的分隔符
labelStyle String 设置一个直接应用于标签元素的样式字符串,默认为undefined
labelWidth Number 设置表单标签宽度,仅当labelAlign设置为“left”或“right”时生效,默认为100px
labelableRenderTpl Array/String/Ext.Template 表单标签模板
msgTarget String 设置错误信息提示位置,
有效值包括:
qtip:显示一个浮动的提示消息
title:显示一个浏览器浮动提示消息
under:在字段下面显示一个提示消息
side:在字段右边显示一个提示消息
none:不显示提示消息
[element id]:直接将错误消息添加到指定元素的innerHTML属性
preventMark Boolean true则不显示错误消息,默认为false
欢迎交流,进入博客网站:www.wangsong520.com进行留言交流,并且里面有更多知识分享!
Ext Js详解指南的更多相关文章
-
【three.js详解之一】入门篇
[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...
-
【three.js详解之二】渲染器篇
[three.js详解之二]渲染器篇 本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...
-
[js高手之路]深入浅出webpack系列2-配置文件webpack.config.js详解
接着上文,重新在webpack文件夹下面新建一个项目文件夹demo2,然后用npm init --yes初始化项目的package.json配置文件,然后安装webpack( npm install ...
-
[js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
-
[js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
-
dev-server.js详解
转载自:https://www.cnblogs.com/ye-hcj/p/7091706.html dev-server.js详解 require('./check-versions')() var ...
-
webpack.dev.conf.js详解
转载自:https://www.cnblogs.com/ye-hcj/p/7087205.html webpack.dev.conf.js详解 //引入当前目录下的utils.js文件模块var ut ...
-
JS 详解 Cookie、 LocalStorage 与 SessionStorage-转载
记录一下这些知识,有时候用到会忘记,对原文作者表达感谢. 附上原文链接:JS 详解 Cookie. LocalStorage 与 SessionStorage 基本概念 Cookie Cookie 是 ...
-
require.js详解
一:什么是require.js ①:require.js是一个js脚本加载器,它遵循AMD(Asynchronous Module Definition)规范,实现js脚本的异步加载,不阻塞页面的渲染 ...
随机推荐
-
Mpale 在汽车底盘悬架系统公差分析应用
汽车底盘的作用是接受发动机的动力,使车轮转动,并保证汽车按驾驶员的操纵正常行驶.底盘包括传动系统.行驶系统.转向系统和制动系统这四大部分,通常,这四大系统也简称为传动系.行驶系.转向系和制动系.悬架是 ...
-
虚拟机中CentOS 7下PHP环境配置
为了简单起见,虚拟机网卡设置为桥接模式 1.yum install httpd php 2.yum install mariadb 3.启动mariadb systemctl start maria ...
-
Hibernate之:各种主键生成策略与配置详解
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...
-
paip.c++ qt 图片处理 检测损坏的图片
paip.c++ qt 图片处理 检测损坏的图片 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net ...
-
自动化测试基础篇--Selenium iframe定位问题
摘自https://www.cnblogs.com/sanzangTst/p/7473437.html 有时候我们在定位的途中发现一个现象,元素就在那儿,不离不去,但是我们怎么整就是定不了位,这个时候 ...
-
Node.js 文件系统fs模块
Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个 ...
-
Machine Learning CodeForces - 940F(带修改的莫队)
题解原文地址:https://www.cnblogs.com/lujiaju6555/p/8468709.html 给数组a,有两种操作,1 l r查询[l,r]中每个数出现次数的mex,注意是出现次 ...
-
HttpClient-RestTemplate-Feign
如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求. Java有原生的API可用于发送HTTP请求,即java.net.URL.java.net.URLConn ...
-
MongoDB入门---文档查询之$type操作符&;limit方法&;skip方法&;简单排序(sort)操作
上一篇文章呢,已经分享过了一部分查询操作了,这篇文章呢?就来继续分享哈.接下来呢我们直接看MongoDB中的$type操作符哈.它呢是基于BSON类型来检索集合中匹配的数据类型,并且返回结果,在Mon ...
-
HUE中oozie执行shell
Oozie执行Shell,传入参数1. 新建一个workflow 2. 拖入一个shell 3. shell脚本如下 #!/bin/sh sqoop import --connect jdbc:mys ...