ExtJS 中类的别名 - alias
在我们查看ExtJS API 的时候,在左侧常会有这样的说明:
红色方框圈出的部分是这个类的别名,它对应类的全称是 Ext.window.Window,由此可以看出别名更加简单,容易记忆和书写。我们在实例化类的时候,可以使用别名来替代类名全称,例如我们之前定义的win对象,他的代码可以修改为:
var win = Ext.create("Ext.Window", { title: '示例窗口', width: 300, height: 200 }); win.show();
看完例子,你是否也想在自定义类中实现别名呢?为了更好的演示别名,我们对Person类做一个简单的修改,将类名的全称修改为MyApp.Person(相当于为Person添加了命名空间):
Ext.define("MyApp.Person", { config: { Name: '', Age: 0, }, Say: function (msg) { Ext.Msg.alert(this.Name + " Says:", msg); }, constructor: function (config) { this.initConfig(config); } });
我们只修改了第一行,其它代码不变。这个时候我们使用之前的代码实例化Person类:
var Tom = Ext.create("Person", { Name: 'Tom', Age: 26 }); Tom.Say("Hello");
刷新页面,很不幸的是我们得到了两个错误:
第一个错误,ExtJS的动态加载检测到系统当前没有Person类的定义,于是就自动加载Person.js,这个路径是不存在的,于是出现了404未找到错误。关于动态加载的问题我们接下来会讲到。
第二个错误,Person 未被定义,所以系统抛出类型错误信息。要想解决这个问题,我们需要将Ext.create方法的第一个参数修改为 "MyApp.Person"。但我们在这里不这样做,因为我们依然希望通过使用Person来完成,那么怎么办呢?这时就用到别名了。
我们为MyApp.Person 类添加别名:
Ext.define("MyApp.Person", { config: { Name: '', Age: 0, }, alias:"Person", Say: function (msg) { Ext.Msg.alert(this.Name + " Says:", msg); }, constructor: function (config) { this.initConfig(config); } });
很简单,只要一行代码,ExtJS 为我们完成了别名的定义。
重新刷新页面,我们得到了想要的结果: