2017-03-05 3 views
1

単一ページのExtJS 6アプリケーションでは、Ext.defineメソッドで宣言されたすべてのクラスをスキャンし、特定のmixinを実装するクラスを探す必要があります。簡単にするために、私が興味を持っているすべてのクラスが既にロードされており、オンデマンドロードメカニズムがゲームから外れていると仮定しましょう。ExtJSアプリケーションで定義されているすべてのクラスを反復する方法

プライベートExt.ClassManager.classesプロパティを経由する以外の方法はありません。より洗練された選択肢がありますか?

とにかく、上記はクラス名のリストです。対応するクラスが特定のmixinを実装しているかどうかを調べるには?特定の場合

+0

あなたは、ビュー/コントローラクラスを反復処理したいですか? – Tejas

+0

いいえ、それらはExt.Baseから派生した汎用クラスです。ほとんどの場合です。 – Mooh

答えて

1
function getClassesByMixin(mixin){ 
    var classes=[]; 
    Ext.iterate(Ext.ClassManager.classes,function(className,c){ 
     if(c.prototype &&c.prototype.mixins && c.prototype.mixins[mixin]){ 
      classes.push(className); 
     } 
    }); 
    return classes; 
} 

Sencha fiddle

+0

ありがとう、テオ。私はほとんど同じソリューションを思いついた。 SenchaがクリーンリフレクションAPIを提供しない理由 – Mooh

関連する問題