ExtJS4检查类是否存在

ExtJS4检查类是否存在,extjs,extjs4,Extjs,Extjs4,我有一系列的名字 var names = ['X', 'Y'] 变量名称=['X','Y'] 对于每个名称,我都希望创建类实例,但仅当适当的js文件存在时,否则函数应返回null getTool:function(name) { var t = Ext.create('VC.tools.' + name + 'Tool',{ map:this.map }); return t.getEntryPoint(); } get

我有一系列的名字

var names = ['X', 'Y'] 变量名称=['X','Y'] 对于每个名称,我都希望创建类实例,但仅当适当的js文件存在时,否则函数应返回null

getTool:function(name) { var t = Ext.create('VC.tools.' + name + 'Tool',{ map:this.map }); return t.getEntryPoint(); } getTool:函数(名称){ var t=Ext.create('VC.tools.'+name+'Tool'{ 地图:这是地图 }); 返回t.getEntryPoint(); } 或者有没有一种方法可以实现某种尝试捕获?我只是不想像文件无法加载等任何错误

编辑:

如果我添加try-catch,我可以避免的不是构造函数错误。但仍然得到文件不存在错误。有办法处理吗

try { var t = Ext.create('VC.tools.' + name + 'Tool',{ map:this.map }); return t.getEntryPoint(); }catch(err){ return null; } 试一试{ var t=Ext.create('VC.tools.'+name+'Tool'{ 地图:这是地图 }); 返回t.getEntryPoint(); }捕捉(错误){ 返回null; }
在ClassManager上使用isCreated方法:

此函数打开一个视图,如

openView('MyApp.view.Oeffnungszeiten');

如果视图存在,它将访问旧实例

您可能已经找到了解决方案,但为了防止它对其他人有帮助,您可以使用以下方法:

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]');
}
function createClassIfExists(name) {
    var newClass;

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

    return newClass;
}

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

在我的例子中,我要查找的类没有定义别名。我发现我可以用这个:

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]');
}
function createClassIfExists(name) {
    var newClass;

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

    return newClass;
}
如果您正在使用“Ext.ClassManager”,请注意查找类是否存在的注意事项。只有当您的代码在查看代码的“requires”部分中具有您要查找的类时,下面的代码才会起作用

if(Ext.ClassManager.get('MyApp.view.Main'))
如果未添加,它将返回未定义

requires: [ 'MyApp.view.Main']

您也可以将其添加到“视图”部分的App.js中。

我有动态类加载。所以我想我不能用这个方法。该类应该在我实例化它时加载