作者:李盼(Lipan)
出处:[Lipan]http://www.cnblogs.com/lipan/

本篇主要介绍一下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基本语法扩展支持的更多相关文章

  1. ExtJs对js基本语法扩展支持

    ExtJs对js基本语法扩展支持 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可 ...

  2. ExtJs4 笔记(2) ExtJs对js基本语法扩展支持

    本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可以引入动态加载的概念来即用即取.这 ...

  3. [转载]ExtJs4 笔记(12) Ext.toolbar.Toolbar 工具栏、Ext.toolbar.Paging 分页栏、Ext.ux.statusbar.StatusBar 状态栏

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  4. [转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图

    本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View.Ext.ListView就是大名鼎鼎的 Ext GridPanel的前身,不过现在的Ext4已经将它整合 ...

  5. [转载]ExtJs4 笔记(3) Ext.Ajax 对ajax的支持

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)     本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事 ...

  6. [转载]ExtJs4 笔记(1) ExtJs大比拼JQuery:Dom文档操作

    出处:[Lipan] (http://www.cnblogs.com/lipan/) 现在主流的JS框架要数ExtJs和JQuery应用的比较广泛.JQuery属于轻量级的,一般做网站应用比较常见,可 ...

  7. [转载]ExtJs4 笔记(10) Ext.tab.Panel 选项卡

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  8. [转载]ExtJs4 笔记(7) Ext.tip.ToolTip 提示

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  9. [转载]ExtJs4 笔记(6) Ext.MessageBox 消息对话框

    作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法 ...

随机推荐

  1. Date-DateFormat-Calendar-Math-regex

    一.Date类(java.util) 作用:表示时间的类,精确到毫秒,以GMT 1970年1月1日0点0分0秒起算 构造方法:     Data() ---获取当前时间      Date(long ...

  2. userBean设置属性2

    package com.java.model; public class Student { private String name;private int age; public String ge ...

  3. jsp另外五大内置对象之-exception

    //有异常的页面 <%@ page language="java" contentType="text/html; charset=utf-8" page ...

  4. Windows Experience Index

    The Windows Experience is still there--even in build 9860.  However, the GUI was retired with Window ...

  5. [dp uestc oj] G - 邱老师玩游戏

    G - 邱老师玩游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  6. Java 集合框架_下

    Map接口 特点: [1]Map接口称为键值对集合或者映射集合,其中的元素(entry)是以键值对(key-value)的形式存在. [2]Map 容器接口中提供了增.删.改.查的方式对集合进行操作. ...

  7. 2018.4.17 java多线程练习二模拟开场仪式进场

    2.某公司组织年会,会议入场时有两个入口,在入场时每位员工都能获取一张双色球彩票,假设公司有100个员工,利用多线程模拟年会入场过程, 并分别统计每个入口入场的人数,以及每个员工拿到的彩票的号码.线程 ...

  8. kubernetes-深入理解pod对象(七)

    Pod中如何管理多个容器 Pod中可以同时运行多个进程(作为容器运行)协同工作.同一个Pod中的容器会自动的分配到同一个 node 上.同一个Pod中的容器共享资源.网络环境和依赖,它们总是被同时调度 ...

  9. mac层到ath9k层,ath9k层到硬件层

    如上图,整个 mac 层分成两个部分——UMAC 和 LMAC.LMAC 分成 MAC 下半部分和硬件抽象层. 硬件抽象层和ath9k层的连接 在hw.h中的函数struct ath_hw_ops() ...

  10. Bootstrap历练实例:下拉菜单插件方法的使用

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...