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(); } 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; }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
在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中。我有动态类加载。所以我想我不能用这个方法。该类应该在我实例化它时加载