3

私は名前の配列を持っています

変数名 = ['X', 'Y']

名前ごとにクラスインスタンスを作成したいのですが、適切なjsファイルが存在する場合にのみ、それ以外の場合は関数がnullを返す必要があります

    getTool:関数(名前) {

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

        return t.getEntryPoint();
}

または、何らかの試行キャッチを実装する方法はありますか? ファイルを読み込めませんでしたなどのエラーが発生したくないだけです。

編集:

try catch を追加すると、回避できるのはコンストラクターのエラーではありません。しかし、まだファイルが存在しないというエラーが発生しました。これを処理する方法はありますか?

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

                return t.getEntryPoint();

            }キャッチ(エラー){
                null を返します。
            }

4

5 に答える 5

3

ClassManager で isCreated メソッドを使用します: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.ClassManager-method-isCreated

于 2012-11-16T00:02:53.223 に答える
2

私の場合、見つけたいクラスにはエイリアスが定義されていませんでした。これを使用できることがわかりました:

function createClassIfExists(name) {
    var newClass;

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

    return newClass;
}
于 2014-02-26T14:23:12.067 に答える
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');

ビューが存在する場合は、古いインスタンスにアクセスします

于 2013-05-16T13:37:06.373 に答える