2013-10-24 8 views
22

私は非常に標準的なタスクを実装しようとしています。例外が発生した場合、私の/errorページにリダイレクトします。コードは次のようになり、簡略化した形で

app.factory('$exceptionHandler', ['$location', function($location) { 
    return function(exception, cause) { 
     $location.path("/error"); 
    }; 
}]); 

しかし、AngularJSは文句:見つけ 循環依存関係:$場所< - $ exceptionHandlerの< - $をrootScope

これは次のようになります例外を処理するときに$locationの使用を許可しないという基本的な制限です。

それ以外はどうすればいいですか?

+0

(http://code.angularjs.org/1.2.0-rc .3/docs/api/ng。$ location) '$ location'の唯一の依存関係は' $ browser'、 '$ sniffer'、' $ rootElement'です。私はなぜこのコードがこのエラーをスローするのかわかりません...申し訳ありませんが、私はあまり役に立たないです。ドキュメントにない隠れた依存関係が存在するに違いありません。 – tennisgent

答えて

44

実行時に依存関係を解決するために、手動$injectorを呼び出す必要があり、この問題を回避するには:[ドキュメント]によると

app.factory('$exceptionHandler', ['$injector', function($injector) { 

    var $location; 

    return function(exception, cause) { 
     $location = $location || $injector.get('$location'); 
     $location.path("/error"); 
    }; 
}]); 
+0

ありがとう、これはうまくいきました! –