Files
处理整个框架 类的创建。 这是由Ext.ClassManager使用的底层工厂,不宜直接使用。 如果您选择使用Ext.Class,你将失去命名空间, 混淆和依赖加载功能可通过Ext.ClassManager取得。 你唯一一次使用Ext.Class,是通过Ext.Class直接创建匿名类。
如果你想创建类,你应该使用Ext.define别名Ext.ClassManager.create启用命名空间和动态的依赖分离度。
Ext.Class仅仅是工厂,它不是超类(superclass)的所有。 所有Ext类继承Base类,请参阅Ext.Base。
别名 类名称简短的别名列表。多数用于微件定义xtypes:
Ext.define('MyApp.CoolPanel', {
extend: 'Ext.panel.Panel',
alias: ['widget.coolpanel'],
title: 'Yeah!'
});
// 使用 Ext.create
Ext.create('widget.coolpanel');
// 使用速记定义微件的xtype
Ext.widget('panel', {
items: [
{xtype: 'coolpanel', html: 'Foo'},
{xtype: 'coolpanel', html: 'Bar'}
]
});
除了"微件"的xtype还有"插件"的ftype,"功能"的ptype等别名命名空间。
备用类名 这个类定义备用名称。例如:
//开发人员
Ext.define('Developer', {
alternateClassName: ['Coder', 'Hacker'],
code: function(msg) {
alert('Typing... ' + msg);
}
});
var joe = Ext.create('Developer');
joe.code('stackoverflow'); //栈溢出
var rms = Ext.create('Hacker');//黑客
rms.code('hack hack');
配置 配置它们的选项列表默认值,自动产生存取方法。 例如:
//构造一台智能手机
Ext.define('SmartPhone', {
config: {
hasTouchScreen: false,//有触摸屏
operatingSystem: 'Other',//操作系统
price: 500//价格
},
constructor: function(cfg) {
this.initConfig(cfg);
}
});
//iPhone手机
var iPhone = new SmartPhone({
hasTouchScreen: true,
operatingSystem: 'iOS'
});
iPhone.getPrice(); // 500;
iPhone.getOperatingSystem(); // 'iOS'
iPhone.getHasTouchScreen(); // true;
继承 继承父类。 例如:
//构造人类
Ext.define('Person', {
say: function(text) { alert(text); }//具有说的方法
});
//构造开发人员
Ext.define('Developer', {
extend: 'Person',//继承人类
say: function(text) { this.callParent(["print "+text]); }//继承了说的方法
});
可继承静态 继承这个类的静态方法清单。 另外的就像statics 但子类继承这些方法。
混入 混入这个类的类列表。例如:
//唱歌
Ext.define('CanSing', {
sing: function() {
alert("I'm on the highway to hell...我在地狱的公路......")
}
});
//音乐家
Ext.define('Musician', {
mixins: ['CanSing']
})
在这种情况下的音乐家类将获得的唱
CanSing混入的方法。
但是,如果音乐家已经有'唱'的方法呢?或者你想混入两个类,这两个类都要定义唱
吗?
在这种情况下,它最好定义混入对象,为每个混入指派名称:
//音乐家
Ext.define('Musician', {
mixins: {
canSing: 'CanSing'//唱歌
},
sing: function() {
// 唱歌操作委托到混入
this.mixins.canSing.sing.call(this);
}
})
唱
音乐家的方法的在这种情况下的将覆盖在唱
方法的混入。
但您可以通过特殊的混入
属性,访问有的混合方法。
需要的类列表(数组) 实例化类之前必须加载的类列表 例如:
Ext.define('Mother', {
requires: ['Child'],
giveBirth: function() {
// 确保Child类是可用的。
return new Child();
}
});
单例 当设置为true,这个类将被实例化为单例。例如:
//记录器
Ext.define('Logger', {
singleton: true,
log: function(msg) {
console.log(msg);
}
});
Logger.log('Hello');
静态 这个类的静态方法的清单。例如:
//构造一台计算机
Ext.define('Computer', {
statics: {
factory: function(brand) {
// 'this' 在静态方法中是指类本身
return new this(brand);
}
},
constructor: function() { ... }//构造函数
});
//创建一台戴尔电脑
var dellComputer = Computer.factory('Dell');
提供可选的类清单,加载相应的类。这些被创建的类不一定是之前加载过的, 但要保证在Ext.onReady之前侦听被调用。 例如:
Ext.define('Mother', {
uses: ['Child'],
giveBirth: function() {//生产
// 此代码可能无法正常工作:
// return new Child();
// 改为使用 Ext.create()
return Ext.create('Child');
}
});
Defaults to: []
Defaults to: {}
得到预处理器
可选择在预处理器堆栈中的具体位置,插入相应的预处理器。 例如:
Ext.Class.registerPreprocessor('debug', function(cls, data, fn) {
// 你的代码在这
if (fn) {
fn.call(this, cls, data);
}
}).setDefaultPreprocessorPosition('debug', 'last');
预处理器名称。 注意在此之前注册registerPreprocessor
插入的位置。四个可能的值是: 'first', 'last', 或者: 'before', 'after' (相对提供的名称在第三个参数)
相对名称
this