配置中的角度使用常量

时间:2016-05-17 09:38:45

标签: angularjs

现在我的路线文件中有这个:

employeeAppModule.config([
        '$httpProvider',
        function ($httpProvider) {
            $httpProvider.interceptors.push(function () {
                var token, headers, $cookies;

                //inject cookies
                angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
                    $cookies = _$cookies_;
                }]);

                return {
                    request: function (request) {
                        console.log(request);

                        token = $cookies.get('jwt-token');
                        alert('request' + token);
                        headers = request.headers || (request.headers = {});

                        if(token != null && token != 'undefined') {
                            headers.Authorization = token;
                        }
                        return request;
                    },
                    response: function (response) {
                        if(response.status && response.status.code === 401) {
                            alert('token wordt verwijderd');
                        }

                        if(response.data && response.data.token && response.data.token.length > 10) {
                            $cookieStore.put('jwt-token', 'Bearer ' + response.data.token);
                        }
                        return response;
                    }
                };
            });
        }]);

我注入了ngCookies手册。是否也可以注入全局变量?我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

全局变量被定义为constant(如果必须在配置阶段注入)或value(如果他们不是)服务:

app.value('Global', Global);

如果全局变量在服务定义时不可用,则可以将它们定义为factory以便懒惰地实例化。

angular.injector是在config块(以及几乎其他任何地方)中获取注入器的错误方法。它创建一个新的注入器实例,在其他任何地方都不使用。在$cookies的情况下,副作用是不可测试的代码段,不具备完整的测试覆盖率。

Interceptor factory function启用了DI,可以使用

注入服务实例
$httpProvider.interceptors.push(function ($cookies, Global) {
  ...