【问题标题】:How to access server side configuration in $log decorator如何在 $log 装饰器中访问服务器端配置
【发布时间】:2014-04-10 07:00:34
【问题描述】:

我有以下路由 - 这是主页(主页)的一部分:

templateUrl: 'pages/home.html',
    controller: 'HomeCtrl',
    resolve: {
        myConfig: function (appConfig) {
            return appConfig.retreiveConfig();
        }
    }

流程如下,我在主页面加载之前从服务器加载配置,所以我可以在那里使用它。

此外,我将decorator 用于“$log”服务,

现在问题来了:如何在我的$logdecorator 中使用路由解析中加载的配置?

在正确的配置从服务器到达之前,我不介意在装饰器中使用一些默认配置。


我无法似乎找到一种方法来使用任何使用 $http$resource 的服务,因为循环依赖


是否有任何方法可以手动/有问题地初始化装饰器

【问题讨论】:

    标签: angularjs angular-decorator


    【解决方案1】:

    您可以尝试以缓存配置数据的方式实现您的appConfig.retrieveConfig 服务方法。然后在你的装饰器中调用appConfig.retreiveConfig()

    然后在装饰器中

    appConfig.retreiveConfig().then(function(data) {
        //Update your decorator configuration
    });
    

    retreiveConfig应该解析一次配置,所以服务方法看起来像

    var config;
    serviceObj.retreiveConfig=function() {
       var defer=$q.defer();
       if(config) { defer.resolve(config);}
    
       someRemoteCall().then(function(data)) {
           config=data;
           defer,resolve(config);
       }
       return defer.promise;
    }
    

    【讨论】:

    • 问题是我无法在我的$log 装饰器中使用appConfig,因为未捕获错误:[$injector:cdep] 找到循环依赖:$browser
    • 你能说明 appConfig 需要哪些依赖项吗?你在哪里使用exceptionHandler
    • myServices.factory('appConfig', ['$http', '$q', function ($http, $q) { 和使用$log 的异常处理程序:angular.module('myApp').config(function ($provide) { $provide.decorator('$exceptionHandler', ['$log', 'stacktrace', function ($log, stacktrace) {
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2021-06-08
    • 2019-09-05
    • 2019-10-12
    • 1970-01-01
    • 2019-10-23
    • 2018-11-26
    相关资源
    最近更新 更多