AngularJs:在自定义服务中使用cookie

AngularJs: use cookies inside custom service

本文关键字:cookie 服务 自定义 AngularJs      更新时间:2023-09-26

我尝试在自定义服务中使用角度cookie,但得到错误:未知提供商:ngCookiesProvider <- ngCookies <- checkLoginService

我将模块、控制器和服务存储在单独的文件中。

控制器:

    (function() {
    'use strict';
    angular
        .module('app')
        .controller('AuthController', AuthController);
    AuthController.$inject = ['$scope', '$http', '$location', 'checkLoginService'];
    function AuthController($scope, $http, $location, checkLoginService) {
        /* jshint validthis:true */
        var vm = this;
        vm.title = 'AuthController';
        $scope.login = function(user) {
            /*logic*/
        }
        $scope.checklogin = function () {
            if (checkLoginService.checkLogin()) {
                /*logic*/
            }
        }
        $scope.checklogin();
    }
})();

服务:

    (function () {
    'use strict';
    angular
        .module('app')
        .service('checkLoginService', ['ngCookies', checkLoginService]);
    checkLoginService.$inject = ['$http'];
    function checkLoginService($http, $cookies) {
        return {
            checkLogin: function () {
                /*logic*/
            }
        }
    }
})();

ngCookies模块不是依赖项名称,则应在模块依赖项中注入ngCookies并使用$cookies来获取cookie对象

//somewhere in app.js
angular.module('app', ['otherModules', ..... , 'ngCookies'])

还要在checkLoginService $inject数组中添加$cookies缺少的依赖项。

angular.module('app')
.service('checkLoginService', ['$cookies', checkLoginService]);
checkLoginService.$inject = ['$http', '$cookies'];
function checkLoginService($http, $cookies) {
    return {
        checkLogin: function () {
            /*logic*/
        }
    }
}