14

angularjsでは、モジュールが与えられた場合、モジュールに与えられたディレクティブ/コントローラーが存在するかどうかをどのように確認しますか.

モジュールがあり、特定のディレクティブがロードされているかどうかを知りたいです。以下はサンプルコードです。

var module = angular.module('myModule');
//check if controller exists
if (module.hasController('my.first.controller')){
   //do something
}
if (module.hasDirective('my.first.directive')){
   //do something
}

私はこれをある意味で実装しました。デフォルトで利用できる場合は、より良い方法を探しています。

これは可能ですか?もしそうなら、どうやってこれをしますか?

4

4 に答える 4

3

ここでいくつかの作業コードを見つけました

angular.service('ControllerChecker', ['$controller', function($controller) {
    return {
        exists: function(controllerName) {
            if(typeof window[controllerName] == 'function') {
                return true;
            }
            try {
                $controller(controllerName);
                return true;
            } catch (error) {
                return !(error instanceof TypeError);
            }
        }
    };
}]);

JSFiddle: http://jsfiddle.net/fracz/HB7LU/6780/

于 2015-07-24T23:30:09.867 に答える
-3

コントローラーなどをロードするために呼び出されるラッパー関数を作成することで問題を解決しました。これにより、各ディレクティブがいつロードされるかを知ることができます。

于 2012-09-29T01:24:41.263 に答える