javascript - 从方法中读取 AngularJS 中的 $Cookies

标签 javascript angularjs cookies

我对 AngularJS 很陌生,我已经在一个示例中工作了几天 https://github.com/cornflourblue/angular-registration-login-example 。问题是,我试图读取从服务器发送的 cookie,在该示例中, Angular cookie 库太旧了,比如(1.2),所以我用最新的库替换了它。当我尝试访问 run 方法时,问题就出现了,我无法访问 $cookies var,我尝试在不注入(inject)的情况下注入(inject)它。

我真的不知道发生了什么。因此,如果您可以帮助我一点(&& ||)向我推荐最新和更好的示例,那就太好了。

(function () {
    'use strict';

   var app = angular
        .module('app', ['ngRoute', 'ngCookies'])
        .config(config)
        .run(run);

    config.$inject = ['$routeProvider', '$locationProvider'];
    function config($routeProvider, $locationProvider) {
        $routeProvider
       .when('/', {
           controller: 'HomeController',
           templateUrl: 'AngularJS/home/home.view.html',
           controllerAs: 'vm'
       })

       .when('/login', {
           controller: 'LoginController',
           templateUrl: 'AngularJS/login/login.view.html',
           controllerAs: 'vm'
       })

       .when('/register', {
           controller: 'RegisterController',
           templateUrl: 'AngularJS/register/register.view.html',
           controllerAs: 'vm'
       })

        .otherwise({ redirectTo: 'AngularJS/login' });
    }

    run.$inject = ['$rootScope', '$location', '$http'];
    function run($rootScope, $location, $http, $cookies) {

        //I want to use $cookies here, but i canno't seem a possible way. 

        // keep user logged in after page refresh
        $rootScope.globals = $cookies.get('globals') || {};
        if ($rootScope.globals.currentUser) {
            $http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.globals.currentUser.authdata; // jshint ignore:line
        }

        $rootScope.$on('$locationChangeStart', function (event, next, current) {
            // redirect to login page if not logged in and trying to access a restricted page
            var restrictedPage = $.inArray($location.path(), ['/login', '/register']) === -1;
            var loggedIn = $rootScope.globals.currentUser;
            if (restrictedPage && !loggedIn) {
                $location.path('/login');
            }
        });
    }

})();

抱歉我的英语水平很差...(不是我的母语):·)

非常感谢。

最佳答案

您忘记将 $cookies 添加到 run.$inject 数组中。

此外,只要您在组件函数的参数中使用标准依赖项名称,定义 .$inject 数组就是可选的。在这里删除您的 .$inject 定义应该会给您留下一个更轻且功能齐全的应用程序。

关于javascript - 从方法中读取 AngularJS 中的 $Cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33922085/

相关文章:

array.filter() 中的 javascript 字符串比较问题

javascript - 使用 jquery load 动态加载页面

javascript - AngularJS 名称可用性

angularjs - 如何更改图例位置?

javascript - IE不能设置cookies?

javascript - Chrome : jQuery . 高度问题

javascript - Typescript + Redux Toolkit,类型 'T' 的参数不可分配给类型 'WritableDraft<T>' 的参数

javascript - 使用 javascript 在 160 个字符后增加短信计数器

保存用户输入内容的 JavaScript

c# - 在 URL 或 cookie 中安全传输对象的注意事项