angularjs - not - ng-cloak que es
La inyección de $ http en la fábrica angular($ exceptionHandler) da como resultado una dependencia circular (3)
Estoy usando esta solución, debido a problemas de dependencia circular con rootScope:
angular
.module(''facilityLog'')
.provider(''$exceptionHandler'', function() {
"use strict";
this.$get = function($injector) {
function exceptionHandler(exception, cause) {
// This is the part where you get the instance of $http in your case
var $rootScope = $injector.get(''$rootScope'');
//...
}
return exceptionHandler;
}});
Por lo tanto, si solicita la instancia dentro de la función ExceptionHandler, no obtendrá el error de dependencia circular.
Cuando intento inyectar $ http en una fábrica anulada, aparece el error:
Error no detectado: [$ injector: cdep] Se encontró una dependencia circular: $ http <- $ exceptionHandler <- $ rootScope
AngularModule.factory(''$exceptionHandler'', function ($http) {
¿Alguna idea de cómo resolver? si me inyecto usando [], $ http no está definido
edit_ _ __ _ __ _ __ _ __ _ __ _ _
según una respuesta a continuación he intentado:
MyModule.config(function($provide, $http) {
$provide.decorator("$exceptionHandler", function($delegate) {
return function(exception, cause) {..
Pero todavía me sale el error circular:
Error no detectado: [$ injector: cdep] Se encontró una dependencia circular: $ http <- $ exceptionHandler <- $ rootScope
Inyecte el $injector
y luego obtenga el servicio $http
desde allí. Algo como esto:
AngularModule.factory(''$exceptionHandler'', function ($injector) {
var $http = $injector.get("$http");
Consulte https://groups.google.com/forum/#!topic/angular/lbFY_14ZtnU/discussion
Sin embargo, esto anulará completamente la funcionalidad $exceptionHandler
proporcionada por Angular. Si solo desea agregar el registro del lado del servidor a la funcionalidad existente, vea esta pregunta sobre cómo aumentar la funcionalidad $exceptionHandler
.
Utilicé lo siguiente para resolver esto. Observe cómo se usa la notación de matriz para que esta minificación sea segura. Tenga en cuenta también que estoy anulando completamente el $ esceptionHandler y estoy utilizando mi propio servicio para reemplazarlo.
angular
.module(''app'')
.factory(''$exceptionHandler'', $exceptionHandler);
$exceptionHandler.$inject = [''$injector'', ''exceptionLoggingService''];
function $exceptionHandler($injector, exceptionLoggingService)
{
return function(exception, cause)
{
exceptionLoggingService.http = exceptionLoggingService.http || $injector.get(''$http'');
exceptionLoggingService.error(exception, cause);
};
}