ExtJS学习笔记:定义extjs类

定义类

Ext.define('Cookbook.Vehicle', {
Manufacturer: 'Aston Martin',
Model: 'Vanquish',
getDetails: function(){
alert('I am an ' + this.Manufacturer + ' ' + this.Model);
}
}, function(){
Console.log('Cookbook.Vehicle class defined!');
});

第一个参数是类名,第二个参数是一个对象,包含类中定义的属性和方法,第三个参数是可选的回调函数,在对象被实例化后执行。

定义的类由 Ext.ClassManager转为Ext.Class的实例,在此过程执行一系列前期和后续的步骤。.前期步骤的顺序如下:

‰‰ Loader: 加载需要的还没有被加载过的类

‰‰ Extend: 基于已有类扩展

‰‰ Mixins: 把定义的 Mixins 融合到类中

‰‰ Config: 在配置选项中的属性将被处理,并创建相应的get/set/apply/reset 方法

‰‰ Statics: 处理静态属性和方法

后续步骤的顺序如下:

‰‰ Aliases: 定义别名,以便通过xtype即可创建实例

‰‰ Singleton: 如果定义为单一对象,此时创建实例

‰‰ Legacy: 不太明白,暂时没用到

也可以通过registerPreProcessor和registerPostProcessor方法添加自定义的处理步骤

如果没有指明基类,默认基类是Ext.Base

Mixins 是一些可以把别的类的属性和方法融合进当前类中,相当于一个子集,简化定义,减少代码量。

1. 定义相机功能类:
Ext.define('HasCamera', {
takePhoto: function(){
alert('Say Cheese! .... Click!');
}
});
2. 定义智能手机类,要求必须具有相机功能.
Ext.define('Cookbook.Smartphone', {
mixins: {
camera: 'HasCamera'
}
});
3. 在智能手机类可调用相机功能类的方法:
Ext.define('Cookbook.Smartphone', {
mixins: {
camera: 'HasCamera'
},
useCamera: function(){
this.takePhoto();
}
});

使用组件查询来访问组件:

1.通过xtype查询

var panels = Ext.ComponentQuery.query('panel');

2.通过css样式级联的方式,如查询某个panel中的所有button

var buttons = Ext.ComponentQuery.query('panel button');

3.通过组件的属性值

var saveButton = Ext.ComponentQuery.query('button[action="saveUser"]');

4.基于ID

var usersPanel = Ext.ComponentQuery.query('#usersPanel');

等等。

扩展extjs的组件

1. 定义扩展组件的类:

Ext.define('Cookbook.DisplayPanel', {
extend: 'Ext.panel.Panel'
});

2. 重载 initComponent 方法并调用父类的同名方法:

Ext.define('Cookbook.DisplayPanel', {
extend: 'Ext.panel.Panel',
initComponent: function(){
// call the extended class' initComponent method
this.callParent(arguments);
}
});

3. 应用具体配置项:

i

nitComponent: function(){
// apply our configuration to the class
Ext.apply(this, {
title: 'Display Panel',
html: 'Display some information here!',
width: 200,
height: 200,
renderTo: Ext.getBody()
});
// call the extended class' initComponent method
this.callParent(arguments);
}

4. 调用:

var displayPanel = Ext.create('Cookbook.DisplayPanel');
displayPanel.show();

时间: 2024-12-25 06:34:20

ExtJS学习笔记:定义extjs类的相关文章

ExtJs学习笔记(1)---ExtJs安装及其使用

从官网下载了ExtJs的3.2版本的SDK,包含了代码依赖的详细说明.文档.范例和其他文件.其中,adapter和resources文件是Ext正常运行所必须的,其他的仅在开发过程中使用到. Adapter:支持把Ext和其他代码库一同使用的文件 build:用于自定义构建ext-all.js的文件 docs:文档中心(仅当运行在服务器上时能够正常访问) examples:大量令人印象深刻富有洞察力的范例 resources:Ext依赖的文件,例如CSS和图片 source:ext的所有代码 在

[ExtJS学习笔记]第六节 Extjs的类系统Class System命名规则及定义和调试

本文地址: http://blog.csdn.net/sushengmiyan/article/details/38479079 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站:    http:

[ExtJS学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38612721 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源:http://docs.sencha.com/ext

[ExtJS学习笔记]第九节 Extjs5的mvc与mvvm框架结构简介

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38537431 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源:http://docs.sencha.com/ext

[ExtJS学习笔记]第八节 Extjs的Ext.toolbar.Toolbar工具条组件及其应用

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38515499 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- Ext JS API: http://docs.sencha.

[ExtJS学习笔记]第五节 使用fontawesome给你的web应用增加友好图标

本文地址: 本文作者:sushengmiyan -------------------------------------------------资源链接-------------------------------------------------------- FontAwesome glyph编码:http://fortawesome.github.io/Font-Awesome/cheatsheet/ 使用图标美化按钮: http://blog.csdn.net/jfok/articl

[ExtJS学习笔记]第七节 Extjs的组件components及其模板事件方法学习

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38487519 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站: http://ww

EXTJS学习笔记--搭建实验环境

1.目的 在eclipse中搭建EXTJS的基础环境,学习如何按照从官方下载的代码中搭建新的Extjs工程 2.学习过程中遇到的问题 ext-4.2.1-gpl与ext-4.2.1-commercial的区别        ext-4.2.1-gpl:开源版本,使用GPL开源协议        ext-4.2.1-commercial:商业版本,收费,稳定 作为个人研究来讲,可以使用ext-4.2.1-gpl. 下载的Extjs目录中各个文件说明        主要目录说明 builds目录:压

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

Lua学习笔记4:类及集成的实现

-- Lua中类的实现 -------------------------------- 基类 ---------------------------- classBase = {x = 0,y = 0} -- x,y为类的成员变量 classBase.__index = classBase -- 这句是重定义元表的索引,必须要有 --模拟构造体,一般名称为new() function classBase:new(x,y) local self = {}     -- 初始化对象自身 setme