2

AngularJS 1.3 シングル ページ アプリ コンポーネントを含む MVC 5.0 Web プロジェクトがあります。未処理の角度例外が発生した場合に MVC コントローラーにポストバックしたいので、次のように$exceptionHandler ファクトリをオーバーライドしています。

    mod.factory('$exceptionHandler', ['$http', function($http) {
    return function(exception, cause) {
        console.log(exception.message);
        $http.post("Application/CatchAngularError", {
            exception: exception,
            cause: cause
        });
    }
}]);

Chrome では、Javascript コンソールが「Uncaught Error: [$injector:cdep] http://errors.angularjs.org/1.3.0/ $injector/cdep?p0=%24rootScope%20%3C-%20%24http% 」を報告します。このスクリプトを含むページを読み込むと、20%3C-%20%24exceptionHandler%20%3C-%20%24rootScope" というメッセージが表示されます。明らかに、$http は既に $exceptionHandler に依存しているため、$exceptionHandler に $http への依存関係を与えることはできません。これにより、循環依存関係が作成されるためです。

私は jQuery.ajax を使用できると思いますが、より角度のあるソリューションが存在する場合はそれを好むでしょう。持ってる人いる?

4

1 に答える 1

1

$injector サービスを使用して、$http サービスを検索できます。

mod.factory('$exceptionHandler', ['$injector', function($injector) {
    return function(exception, cause) {
        console.log(exception.message);
        var $http = $injector.get('$http');
        $http.post("Application/CatchAngularError", {
            exception: exception,
            cause: cause
        });
    };
于 2014-11-11T15:57:39.767 に答える