首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用John爸爸的样式指南语法编写的提供者的缩小问题

使用John爸爸的样式指南语法编写的提供者的缩小问题
EN

Stack Overflow用户
提问于 2015-07-19 16:58:20
回答 1查看 179关注 0票数 0

我写了一个提供者使用约翰爸爸的风格指南,即使他没有提供任何关于提供者的规则。当我在我的应用程序的run块中注入我的服务时,我得到以下错误:

Uncaught Error: [$injector:strictdi] auth is not using explicit annotation and cannot be invoked in strict mode

run块:

代码语言:javascript
复制
angular.module('app', ['rest-client'])
.run(runBlock);

runBlock.$inject = ['Restangular', '$http', 'auth'];

/* @ngInject */
function runBlock(Restangular, $http, auth) {
}

我的提供者:

代码语言:javascript
复制
(function () {
    'use strict';

    angular
        .module('rest-client')
        .provider('auth', authProvider);

    authProvider.$inject = [];

    /* @ngInject */
    function authProvider() {

        var config = {
            authBaseUrl: undefined
        };

        var serviceProvider = {
            setAuthBaseUrl: setAuthBaseUrl,
            $get: $get
        };

        return serviceProvider;

        function setAuthBaseUrl(authBaseUrl) {
            config.authBaseUrl = authBaseUrl;
        };

        $get.$inject = ['localStorageService', 'Restangular', '$q', '$http'];

        /* @ngInject */
        function $get(localStorageService, Restangular, $q, $http) {
            return authService(localStorageService, Restangular, $q, $http);
        };

        authService.$inject = ['localStorageService', 'Restangular', '$q', '$http'];
        /* @ngInject */
        function authService(localStorageService, Restangular, $q, $http) {

            var service = {
                getAccessToken: getAccessToken,
                setAccessToken: setAccessToken,
                getRefreshToken: getRefreshToken,
                setRefreshToken: setRefreshToken,
                deleteTokens: deleteTokens,
                logout: logout,
                refreshToken: refreshToken
            };

            return service;

            ////////////////

            function getAccessToken() {
                var token = localStorageService.get('access-token');
                return token;
            }

            function setAccessToken(token) {
                localStorageService.set('access-token', token);
                Restangular.setDefaultHeaders({Authorization: 'Bearer ' + this.getAccessToken()});
            }

            function getRefreshToken() {
                var token = localStorageService.get('refresh-token');
                return token;
            }

            function setRefreshToken(token) {
                localStorageService.set('refresh-token', token);
            }

            function deleteTokens() {
                localStorageService.remove('access-token');
                localStorageService.remove('refresh-token');
            }

            function logout() {
                localStorageService.clearAll();
                Restangular.setDefaultHeaders({Authorization: 'Bearer ' + this.getAccessToken()});
            }

            function refreshToken() {
                var deferred = $q.defer();
                $http.get(config.authBaseUrl + '/auth/refresh/' + this.getRefreshToken()).then(function (result) {
                    var accessToken = result.data.accessToken;
                    this.setAccessToken(accessToken);
                    deferred.resolve(accessToken);
                });
                return deferred.promise;
            }

        }

    }
})();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-19 18:19:52

代码语言:javascript
复制
    return serviceProvider;

跑前

代码语言:javascript
复制
    $get.$inject = ['localStorageService', 'Restangular', '$q', '$http'];

代码语言:javascript
复制
    authService.$inject = ['localStorageService', 'Restangular', '$q', '$http'];

后者是不必要的,它不会参与DI。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31503640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档