ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载、类的封装等。
一、动态引用加载
ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可以引入动态加载的概念来即用即取。这些代码都要写在Ext.onReady外面。
1.动态引用外部Js
[Js]
1
2
3
4
|
//加载配置可用 Ext.Loader.setConfig({ enabled: true }); //动态引用“../ux/”目录下所有Js文件类,映射到对应命名空间 Ext.Loader.setPath( 'Ext.ux' , '../ux/' ); |
2.动态加载类
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//加载单个类 Ext.require( 'Ext.window.Window' ); //加载多个 Ext.require([ 'Ext.grid.*' , 'Ext.data.*' , 'Ext.util.*' , 'Ext.grid.PagingScroller' ]); //加载所有类,除了“Ext.data.*”之外 Ext.exclude( 'Ext.data.*' ).require( '*' ); |
二、对类的封装
Js本身是面向对象的语言,但是语法层面上对类的支持不够完善,ExtJs对此作了一系列的封装,下面看看类的定义、字段、构造函数、方法、静态字段,方法的实现方式,还用类的继承的用法。
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
Ext.onReady( function () { Ext.define( "My.test.Animal" , { height: 0, weight: 0 }); Ext.define( "My.test.Person" , { //普通子段 name: "" , //属性 config: { age: 0, father: { name: "" , age: 0 } }, //构造方法 constructor: function (name, height) { this .self.count++; if (name) this .name = name; if (height) this .height = height; }, //继承 extend: "My.test.Animal" , //实例方法 Say: function () { alert( "你好,我是:" + this .name + ",我今年" + this .age + "岁,我的身高是:" + this .height + "。我的爸爸是:" + this .father.name + ",他" + this .father.age + "岁。" ); }, //静态子段,方法 statics: { type: "高等动物" , count: 0, getCount: function () { return "当前共有" + this .count + "人" ; } } }); function test() { var p = Ext.create( "My.test.Person" , "李四" , 178); p.setAge(21); p.setFather({ age: 48, name: "李五" }); p.Say(); Ext.create( "My.test.Person" ); alert(My.test.Person.getCount()); } test(); }); |
三、基本数据类型
ExtJs支持数值型、字符串型、日期型、布尔型等基本数据类型,内容比较简单,下面演示基本的声明用法,以及类型转换。
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//定义一个日期类型的数据 var date1 = new Date( "2011-11-12" ); var date = new Date(2011, 11, 12, 12, 1, 12); //转化为字符串型 alert(date.toLocaleDateString()); //转化为数值型 alert(Number(date)); //布尔型,假 var myFalse = new Boolean( false ); //真 var myBool = new Boolean( true ); //定义数值 var num = new Number(45.6); alert(num); |
四、函数执行时间控制
主要用两个方面,1.让某个函数等待一段时间后自动执行。2.然某个函数按照一定频率反复执行。
1.函数等待执行
实现一个功能,页面加载完毕后,等待3秒后弹出提示。
[Js]
1
2
3
4
5
|
var func1 = function (name1, name2) { Ext.Msg.alert( "3秒钟后自动执行" , "你好," + name1 + "、" + name2 + "!" ); }; Ext.defer(func1, 3000, this , [ "张三" , "李四" ]); |
1.函数按照一定频率反复执行
让div1每隔一秒更新一次显示当前时间,10秒又自动停止更新:
[Js]
1
2
3
4
5
6
7
8
9
10
11
|
//周期执行 var i = 0; var task = { run: function () { Ext.fly( 'div1' ).update( new Date().toLocaleTimeString()); if (i > 10) Ext.TaskManager.stop(task); i++; }, interval: 1000 } Ext.TaskManager.start(task); |
五、键盘事件侦听
1..Ext.KeyMap
通过Ext.KeyMap可以建立键盘和用户动作(Actions)之间的映射。下面看看例子,页面html沿用Ext.Updater部分。
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
var f = function () { alert( "B被按下" ); } var map = new Ext.KeyMap(Ext.getDoc(), [ { key: Ext.EventObject.B, fn: f }, { key: "bc" , fn: function () { alert( 'b,c其中一个被按下' ); } }, { key: "x" , ctrl: true , shift: true , alt: true , fn: function () { alert( 'Control + shift +alt+ x组合键被按下.' ); }, stopEvent: true }, { key: "a" , ctrl: true , fn: function () { alert( 'Control+A全选事件被阻止,自定义事件执行!' ); }, stopEvent: true } ]); |
我们看到,在IE中测试,当我们按下ctrl+A键时,全选功能被屏蔽,支持了我们自定义的方法。
2.Ext.KeyNav
Ext.KeyNav主要是用来绑定方向键的,已支持的键:enter, left, right, up, down, tab, esc, pageUp, pageDown, del, home, end,现在通过它来实现鼠标控制层移动的功能:
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
var div1 = Ext.get( "div1" ); var nav = new Ext.KeyNav(Ext.getDoc(), { "left" : function (e) { div1.setXY([div1.getX() - 1, div1.getY()]); }, "right" : function (e) { div1.setXY([div1.getX() + 1, div1.getY()]); }, "up" : function (e) { div1.move( "up" ,1); }, "down" : function (e) { div1.moveTo(div1.getX(), div1.getY() + 1); }, "enter" : function (e) { } }); |
ExtJs4 笔记(2) ExtJs对js基本语法扩展支持的更多相关文章
- ExtJs对js基本语法扩展支持
ExtJs对js基本语法扩展支持 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可 ...
- [转载]ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/) 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引 ...
- ExtJs4 笔记(4) Ext.XTemplate 模板
ExtJs4 笔记(4) Ext.XTemplate 模板 摘自:http://www.cnblogs.com/lipan/ 本篇将涉及到ExtJs中一个重要的概念,模板.话说Razor很神奇,但是我 ...
- [转载]ExtJs4 笔记(3) Ext.Ajax 对ajax的支持
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/) 本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事 ...
- ExtJs4 笔记(3) Ext.Ajax 对ajax的支持
本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作封装,还有扩展的常用函数等.Ajax服务端交互式操作是提交到.NET MVC.后续服务端交互都采用这一方式实现. ...
- [转载]ExtJs4 笔记(12) Ext.toolbar.Toolbar 工具栏、Ext.toolbar.Paging 分页栏、Ext.ux.statusbar.StatusBar 状态栏
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- [转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图
本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View.Ext.ListView就是大名鼎鼎的 Ext GridPanel的前身,不过现在的Ext4已经将它整合 ...
- ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图
本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View.Ext.ListView就是大名鼎鼎的Ext GridPanel的前身,不过现在的Ext4已经将它整合到 ...
- 笔记28 mssql的update :from语法
原文:笔记28 mssql的update :from语法 笔记28 mssql的update :from语法 --mssql的update :from语法 --a表 b表 结构分别 id ,name ...
随机推荐
- [转]-bash: wget: command not found的两种解决方法
wget 时提示 -bash:wget command not found,很明显没有安装wget软件包.一般linux最小化安装时,wget不会默认被安装,这里是CentOS 6.5 64位系统 解 ...
- 我的Python成长之路---第一天---Python基础(作业1:登录验证)---2015年12月26日(雾霾)
作业一:编写登录接口 输入用户名密码 认证成功系那是欢迎信息 输错三次后锁定 思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则 1)认证流程参考的是Lin ...
- WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇]
原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇] 在进行基于会话信道的WCF服务调用中,由于受到并发信道数量的限制,我们需要及时的关闭信道:当遇到某些异常,我们需要强行中止(Abor ...
- Multiple bindings were found on the class path(转)
Multiple bindings were found on the class path SLF4J API is designed to bind with one and only one u ...
- perl 传递对象到模块
perl 中的对象 就是引用 通过new方法传递数据结构给各个模块 [root@wx03 test]# cat x1.pm package x1; use Data::Dumper; sub new ...
- php实现加好友功能
思路: 1用户发送好友申请之后 把申请储存到申请数据表中,状态为 未验证 2 当用户登录时,查询申请表中是否有uid和被申请人id相同的,如果同意,更改状态,并把数据插入到对应的好友数据表否则,删除申 ...
- 使用Xshell生成key,避免password登录linux
我们通常Xshell使用命令ssh user@ip远程登录linux,这将促使我们进入password更麻烦的,通缉免费password日志的话,我们可以生成相应的key.然后把遥控器server上, ...
- longest incresing sequence
动态规划基本题目,longest incresing sequence,找出序列中的最长递增子序列: 例如给出序列{8,3,5,2,4,9,7,11}, 其中最长递增子序列为{3,5,9,11}或{3 ...
- Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用
Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...
- [转]Cocos Studio和Cocos2d-x版本对应关系
2015-1-19阅读139 评论0 From: http://www.cocoachina.com/bbs/read.php?tid=182077 版本对应列表: Studio2.x CocosSt ...