Ext.define('Algo.data.Simulated', {
requires: [
//....
],
onClassExtended: function (cls, data) {
// ....
}
})
这是代码。我在Sencha的网站上找不到任何关于它的文档。 此外,cls和数据意味着什么?
答案 0 :(得分:3)
嗯,找出答案的简单方法是定义一个新类,覆盖onClassExtended,并使用两个console.log
来记录值。
但是,让我们采取艰难的方式,在ExtJS代码库中搜索onClassExtended
。 Notepad ++确实提供了一个搜索,可以在目录中的所有文件中找到一个字符串,这对ExtJS非常有用。
您会发现该属性首先在packages\core\src\class\Class.js
,l处理。 347 ff。,并且处理除了将函数添加到$onExtended
之外什么都不做。
因此,我们搜索$onExtended
,发现通常会在$onExtended
中调用triggerExtended()
,调用它,你猜它,packages\core\src\class\Class.js
,l。 347 ff。 (但在当前班级onClassExtended
被添加到列表之前,它被称为!)
Class.triggerExtended.apply(Class, arguments);
与
一起function(Class, data, hooks) {
表示cls
将包含Class
中的任何内容,而data
将包含已放入extend方法的任何data
。
查看代码,我认为这两个参数是Ext.define
的两个参数:
Ext.define(
'MyApp.data.Test', // <- Class
{ // data object
extend:'Ext.class.Base' // <- "data.extend" is deleted in line 357
...
}
);
似乎onClassExtended
允许您在层次结构的每个类中定义可以转换类定义的处理指令。它们被执行,从最顶层(最特殊的类)开始,直到它们到达基类Ext.class.Base
为止。
与构造函数不同,这些转换是在定义子类时执行的,而不是在实例创建期间执行的。