Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular JS exceptionHandler中的循环依赖关系_Angularjs - Fatal编程技术网

Angularjs Angular JS exceptionHandler中的循环依赖关系

Angularjs Angular JS exceptionHandler中的循环依赖关系,angularjs,Angularjs,当尝试将依赖项($cordovailogs)注入到注入到$exceptionHandler服务的工厂中时,我遇到以下错误: 错误:[$injector:cdep]找到循环依赖项:$rootScope将委托器包装到函数中以创建单独的作用域: 功能覆盖(异常、原因) { var$http=$injector.get('$http'); } 函数委托器($delegate,$injector) { 返回覆盖; } 函数提供程序($provide) { $Provider.decorator(“$e

当尝试将依赖项(
$cordovailogs
)注入到注入到
$exceptionHandler
服务的工厂中时,我遇到以下错误:


错误:
[$injector:cdep]
找到循环依赖项:
$rootScope将委托器包装到函数中以创建单独的作用域:

功能覆盖(异常、原因)
{
var$http=$injector.get('$http');
}
函数委托器($delegate,$injector)
{
返回覆盖;
} 
函数提供程序($provide)
{
$Provider.decorator(“$exceptionHandler”、[“$delegate”、“$injector”、delegator]);
}
角度模块('测试',[]);
角度.module('test').config(提供程序)

将委托人包装到函数中以创建单独的作用域:

功能覆盖(异常、原因)
{
var$http=$injector.get('$http');
}
函数委托器($delegate,$injector)
{
返回覆盖;
} 
函数提供程序($provide)
{
$Provider.decorator(“$exceptionHandler”、[“$delegate”、“$injector”、delegator]);
}
角度模块('测试',[]);
角度.module('test').config(提供程序)

我找不到确切的根本原因,但通过使用$injector解决依赖关系,而不是将依赖关系作为参数传递,我已经解决了这个问题

  ((() => {
        "use strict";
        angular
            .module("exceptionhandler")
            .config(config);
        config.$inject = ["$provide"];
        function config($provide) {

            $provide.decorator("$exceptionHandler", ["$delegate", "$injector", extendExceptionHandler]);
        }
//passing $injector service
        function extendExceptionHandler($delegate: any, $injector) {
            return (exception: any, reason: any) => {
//resolve the ExceptionHandlerService dependency using $injector. You can use any resolve any dependency here.
                var exceptionHandlerService: Common.Exception.IExceptionHandlerService = $injector
                    .get("ExceptionHandlerService");  
                  $delegate(exception, reason);                   
            };
        }
    })());

我找不到确切的根本原因,但通过使用$injector解决依赖关系,而不是将依赖关系作为参数传递,我已经解决了这个问题

  ((() => {
        "use strict";
        angular
            .module("exceptionhandler")
            .config(config);
        config.$inject = ["$provide"];
        function config($provide) {

            $provide.decorator("$exceptionHandler", ["$delegate", "$injector", extendExceptionHandler]);
        }
//passing $injector service
        function extendExceptionHandler($delegate: any, $injector) {
            return (exception: any, reason: any) => {
//resolve the ExceptionHandlerService dependency using $injector. You can use any resolve any dependency here.
                var exceptionHandlerService: Common.Exception.IExceptionHandlerService = $injector
                    .get("ExceptionHandlerService");  
                  $delegate(exception, reason);                   
            };
        }
    })());

你是怎么解决这个问题的?@XAVI我现在记不得了。您是否有相同的问题?我已通过使用$injector解决依赖关系,而不是将依赖关系作为参数传递,解决了此问题。我不知道为什么会在这种情况下抛出循环依赖。你是如何解决这个问题的?@XAVI我现在记不起来了。您是否有相同的问题?我已通过使用$injector解决依赖关系,而不是将依赖关系作为参数传递,解决了此问题。我不知道为什么在这种情况下会抛出循环依赖。
(function() {
    'use strict';

      angular
        .module('blocks.exception')
        .provider('exceptionHandler', exceptionHandlerProvider)
        .config(config);

    /**
     * Must configure the exception handling
     * @return {[type]}
     */
    function exceptionHandlerProvider() {
        /* jshint validthis:true */
        this.config = {
            appErrorPrefix: undefined
        };

        this.configure = function (appErrorPrefix) {
            this.config.appErrorPrefix = appErrorPrefix;
        };

        this.$get = function() {
            return {config: this.config};
        };
    }

    /**
     * Configure by setting an optional string value for appErrorPrefix.
     * Accessible via config.appErrorPrefix (via config value).
     * @param  {[type]} $provide
     * @return {[type]}
     * @ngInject
     */
    function config($provide) {
        $provide.decorator('$exceptionHandler', extendExceptionHandler);
    }

    /**
     * Extend the $exceptionHandler service to also display a toast.
     * @param  {Object} $delegate
     * @param  {Object} exceptionHandler
     * @param  {Object} logger
     * @return {Function} the decorated $exceptionHandler service
     */
    function extendExceptionHandler($delegate, exceptionHandler, logger) {
        return function(exception, cause) {
            var appErrorPrefix = exceptionHandler.config.appErrorPrefix || '';
            var errorData = {exception: exception, cause: cause};
            exception.message = appErrorPrefix + exception.message;
            $delegate(exception, cause);
            /**
             * Could add the error to a service's collection,
             * add errors to $rootScope, log errors to remote web server,
             * or log locally. Or throw hard. It is entirely up to you.
             * throw exception;
             *
             * @example
             *     throw { message: 'error message we added' };
             */
            logger.error(exception.message, errorData);
        };
    }
})();
  ((() => {
        "use strict";
        angular
            .module("exceptionhandler")
            .config(config);
        config.$inject = ["$provide"];
        function config($provide) {

            $provide.decorator("$exceptionHandler", ["$delegate", "$injector", extendExceptionHandler]);
        }
//passing $injector service
        function extendExceptionHandler($delegate: any, $injector) {
            return (exception: any, reason: any) => {
//resolve the ExceptionHandlerService dependency using $injector. You can use any resolve any dependency here.
                var exceptionHandlerService: Common.Exception.IExceptionHandlerService = $injector
                    .get("ExceptionHandlerService");  
                  $delegate(exception, reason);                   
            };
        }
    })());