`
923080512
  • 浏览: 190843 次
  • 性别: Icon_minigender_1
  • 来自: 商丘
社区版块
存档分类
最新评论

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_笔记.docx

    **第二章 ExtJs对js基本语法扩展支持** 1. **动态引用加载**:通过`Ext.require`实现按需加载JS文件,优化页面加载速度。 2. **类的封装**:使用面向对象的方式组织代码,提高代码复用性和可维护性。 3. **基本数据...

    老师整理的extjs学习笔记

    ### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...

    EXTJS学习笔记

    ### EXTJS学习笔记 #### 一、EXTJS基础概念与命名空间管理 **EXTJS** 是一款基于JavaScript的开源框架,主要用于开发复杂的企业级Web应用。它的设计目标是提高前端开发效率并简化复杂的用户界面(UI)开发过程。在...

    EXTJS(搭建环境)学习笔记.doc

    2. Spket 1.6.23:这是一个JavaScript开发插件,提供代码提示和语法检查功能。 3. Extjs 5.1:EXTJS的最新版本,用于构建用户界面。 4. Java 1.6:作为后端编程语言,用于与EXTJS前端交互。 5. MySQL 5.5:数据库...

    Extjs复习笔记(十七)-- 给grid里面的内容分组

    本篇复习笔记将聚焦于EXTJS Grid中的一个重要特性——内容分组,帮助你深入理解如何实现这一功能。 内容分组在EXTJS Grid中允许你将数据按照特定字段进行分类,这样可以更清晰地组织和展示数据。这在处理大量数据时...

    extjs+韩顺平—玩转oracle视频教程笔记

    EXTJS 3.4.0是该框架的一个版本,可能包含许多当时流行的特性,如Grid Panel、Form Panels、Tree Panels等,以及对Ajax和JSON的支持。 《轻量级J2EE+企业应用实战+Struts+Spring+Hibernate整合开发》这本书籍,主要...

    javase6 学习笔记(李兴华培训课堂笔记所有.)

    此外,标签中提及的`javaee`、`extjs`、`jquery`、`oracle`等,分别代表了Java企业版、前端JavaScript框架、数据库技术和Oracle数据库,这些知识可以作为进一步学习的方向,将Java应用到更广泛的领域。

    JS程序设计笔记JS程序设计笔记.doc

    在浏览器中,JS代码由内置的JS引擎解释执行,但不同的浏览器可能对JS的支持程度不同,这可能导致兼容性问题。 JS开发工具多样,从简单的记事本到专业的IDE,如MYECLIPSE,都可以编写JS代码。 在案例中,我们看到...

    javascript笔记.

    JavaScript是Web开发中不可或缺的一部分,主要用于增强网页的交互性和动态性。它主要应用于客户端...通过熟练掌握JavaScript的基本语法、事件处理以及调试技巧,开发者能够创建出功能丰富且用户体验优秀的网页应用。

    easyUI笔记

    ### easyUI笔记知识点详解 #### 一、什么是jQuery EasyUI? **jQuery EasyUI** 是一组基于 jQuery 的 UI 插件集合。它的目标是帮助 Web 开发者更容易地创建功能丰富且美观的用户界面。通过使用 **jQuery EasyUI**...

    extjsExtjs学习笔记——多个图片XTemplate排版居中,自动缩放处理

    ExtJS是一个强大的JavaScript框架,它提供了丰富的组件和模板功能,帮助开发者构建用户界面。XTemplate是ExtJS中的一个重要组件,用于在数据驱动的视图中动态渲染HTML内容。 首先,我们要理解XTemplate的基本使用。...

    mongodb学习笔记

    `$pushAll` 修改器用于数组类型的键值对,例如 `{ $pushAll : { books: ["EXTJS", "JS"] } }`。 `$addToSet` 修改器用于数组类型的键值对,例如 `{ $addToSet : { books: "JS" } }`。 RunCommand 函数和 ...

    jquery笔记

    - **Prototype**:作为早期成熟的JavaScript库,Prototype通过扩展JavaScript的内置对象,提供了大量的预定义对象和函数,极大地简化了Web开发过程。 - **Dojo**:Dojo除了提供基础的JavaScript功能外,还具备离线...

    神奇的JQuery学习[基础学习笔记].pdf

    JQuery学习基础学习笔记为我们提供了一个全面认识和了解JQuery的机会,JQuery是一个快速、小巧且功能丰富的JavaScript库。它简化了HTML文档遍历和事件处理、DOM操作、动画以及Ajax交互,从而加速了web开发过程。 ...

    java优秀教程大集合

    "ext教程.rar"可能涉及Java的扩展库或框架的学习,如JQuery、EXTJS或其他第三方库。这些库通常能够提升开发效率,为Java应用添加丰富的功能和界面元素。 "java技术从入门到精通(孙鑫)学习笔记.rar"是基于知名Java...

    【藏宝图】(珍藏版)2012java开发工程师必备精品资料(115)

    这个项目采用ExtJs+struts2+hibernate+spring等技术栈实现了图书管理系统,适合中级开发者用来学习企业级应用的开发方法。 #### 二十四、java聊天程序 该聊天程序支持私聊、公聊、截图、文件传输等功能,是一份...

Global site tag (gtag.js) - Google Analytics