ExtJS 4检查类是否存在

时间:2012-11-15 23:55:49

标签: extjs extjs4

我有一系列名字

 var names = ['X', 'Y'] 

对于我想创建类实例的每个名称,但仅当存在正确的js文件时,否则函数应返回null

    getTool:function(name) {

        var t = Ext.create('VC.tools.' + name + 'Tool',{
            map:this.map
        });

        return t.getEntryPoint();
}

或许有没有办法实现某种尝试捕获?我只是不希望任何错误,如文件无法加载等。

编辑:

如果我添加try catch我可以避免不是构造函数错误。但仍然有文件不存在错误。有办法解决这个问题吗?


    try {
                var t = Ext.create('VC.tools.' + name + 'Tool',{
                    map:this.map
                });

                return t.getEntryPoint();

            }catch(err){
                return null;
            }

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

您可能已经找到了解决方案,但万一它可能对其他人有帮助,您可以使用它:

if(Ext.ClassManager.getAliasesByName('[Classname to check]').length > 0) {

    // create the requested component
    var component = Ext.create('[Classname to check]');

    // add replace the contents of the center container with the created component
    centerContainer.removeAll();
    centerContainer.add(component);

} else {
    console.log('Uknown component: '+ '[Classname to check]');
}

它不会给你一个错误,如果它不存在,也不会尝试下载你的类文件。

答案 2 :(得分:2)

在我的情况下,我想要找到的类没有定义别名。我发现我可以使用它:

function createClassIfExists(name) {
    var newClass;

    if(!Ext.isEmpty(Ext.ClassManager.getNamesByExpression(name + '*')))
        newClass = Ext.create(name);

    return newClass;
}

答案 3 :(得分:0)

function openView(cid) {
    shortName = cid.substr(cid.lastIndexOf(".")+1, cid.length);
    if(Ext.get(shortName) == null) Ext.create(cid);
   Ext.Viewport.setActiveItem(Ext.getCmp(shortName));
}

此功能打开一个类似

的视图
openView('MyApp.view.Oeffnungszeiten');

如果View存在,则访问旧实例

答案 4 :(得分:0)

如果您正在使用' Ext.ClassManager' ,请注意查找是否存在类。以下代码仅适用于您的代码具有您要求的类别,并且需要使用'查看代码的一部分。

if(Ext.ClassManager.get('MyApp.view.Main'))

如果尚未添加,将返回 undefined

requires: [ 'MyApp.view.Main']

您也可以在' 视图' 部分的App.js中添加此内容。