配置Ext.Loader以使每个命名空间具有一个文件

时间:2014-07-14 12:58:31

标签: javascript extjs extjs5

有没有办法以这种方式配置Ext.Loader,以便每个命名空间处理一个文件? 每个文件有一个类通常是可以的,但有时它需要只有很多文件。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您有所有类的列表,那么您可以像Ext.Loader一样添加适当的映射:

Ext.Loader.addBaseUrlClassPathMappings({
    "Namespace.Class": "path/fileName.js"
});

如果你没有那种清单,那就不那么简单了。您可以覆盖Ext.configuration.ux.Inventory.getPath并在那里进行一些映射。示例代码:

Ext.define('Ext.configuration.ux.Inventory', {
    override: 'Ext.Inventory',
    getPath: (function () {
        var parent = Ext.Inventory.prototype.getPath;

        return function (className) {
            var result = parent.apply(this, [className]);

            // do mapping here                
            console.log(className + ' -> ' + result);

            return result;
        };
    }())
});

答案 1 :(得分:0)

作为替代方案 - 如果您有私人"这个类只打算由它创建的类使用(或与之一起使用),你可以将多个Ext.define语句添加到一个文件中,并以这种方式拥有多个类。

这是一种帮助分组相关类并使文件保持混乱的方法。

需要注意的是,您无法使用requiresuses来加载这些类。