ExrJS4学习笔记1 类
ExtJS4创建类的方式
在Extjs4中,你只需要使用一个方法就可以解决这些问题:Ext.define.以下是它的基本语法: 1: Ext.define(className, members, onClassCreated);
className: 类名
members:代表类成员的对象字面量(键值对,json)
onClassCreated: 可选的回调凼数,在所有依赖都加载完毕,幵且类本身建立后觌发.由亍类创建的新的异步特性,这个回调凼数在很多情况下都很有用.这些在第四节中将迚一步讨论
例如:
Ext.define('My.sample.Person', {
name: 'Unknown',
constructor: function (name) {
if (name) {
this.name = name;
}
return this;
},
eat: function (foodType){
alert(this.name + " is eating " + foodType);
return this;
}
});
var li = Ext.create('My.sample.Person', 'LiLei');
li.eat('面包');
程序执行结果会弹出alert窗口显示"LiLei is eating 面包".
注意:我们使用Ext.create()方法创建了My.sample.Person类的一个新实例.我们也可以使用新的关键字(new My.sample.Person())来创建.然而,建议养成始终用Ext.create来创建类示例的习惯,因为它允许你利用动态加载的优势.更多关于动态加载信息,请看入门指南:入门指南
-----------------------------------------------------------------------------------------
2.配置
在ExtJS 4 ,我们引入了一个专门的配置属性,用于提供在类创建前的预处理功能.特性包括:
- 配置完全封装其他类成员
- getter和setter.如果类没有定义这些方法,在创建类时将自动生成配置的属性的getter和setter方法。
- 同样的,每个配置的属性自动生成一个apply方法.自动生成的setter方法内部在设置值之前调用apply方法.如果你要在设置值之前自定义自己的逻辑,那就重载apply方法.如果apply没有返回值,则setter不会设置值.看下面applyTitle的例子:
示例代码
Ext.define('My.own.Window', {
isWindow: true,
config: {
title: 'Title Here',
bootomBar: {
enabled: true,
height: 50,
resizable: false
}
},
constructor: function (config) {
this.initConfig(config);
return this;
},
applyTitle: function (title) {
if (!Ext.isString(title) || title.length == 0) {
alert('Error:Title Muset be a valid non-empty string');
} else {
return title;
}
},
applyBottomBar: function (bottomBar) {
if (bottomBar && bottomBar.enabled) {
if (!this.bottomBar) {
//这句不知道哪里冒出来的 没有定义这个类啊
return Ext.create('My.own.WindowBottomBar', bottomBar);
} else {
this.bottomBar.setConfig(bottomBar);
}
}
}
});
var myWindow = Ext.create('My.own.Window', {
title: 'Hello World',
bottomBar: {
height:60
}
});
alert(myWindow.getTitle()); //Hello World
myWindow.setTitle('Someting New');
alert(myWindow.getTitle()); //Something New
myWindow.setTitle(null); //alter "Error: Title must be a valid non-empty string"
myWindow.setBootomBar({ height: 100 }); //高度就会被设置成 100了,但是这里的Bottom为啥b大写了呢?
3.Static
静态成员可以使用statics配置项来定义
Ext.define('Computer', {
statics: {
instanceCount: 0,
factory: function (brand) { //品牌,商标
//this 在这里引用类本身
return new this({ brand: brand });
}
},
config: {
brand: null
},
constructor: function (config) {
this.initConfig(config);//初始化 配置
//直接掉用当前类的静态方法
this.self.instanceCount++;
return this;
}
});
var dellComputer = Computer.factory('Dell');
var aappleCompute = Computer.factory('Mac');
//使用自动生成的getter的配置属性的值。alert“Mac”
alert(aappleCompute.getBrand());
alert(Computer.instanceCount);//alert "2"
ExtJs4 TreeNode设置节点的值:node.set('text', 'newValue')

浙公网安备 33010602011771号