【问题标题】:Reading $Cookies in AngularJS from a method从方法中读取 AngularJS 中的 $Cookies
【发布时间】:2016-02-28 13:44:01
【问题描述】:

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

我实际上不知道发生了什么。所以如果你能帮我一点(&& ||)推荐我最新更好的例子会很棒。

(函数(){
    '使用严格';

   var app = 角度
        .module('app', ['ngRoute', 'ngCookies'])
        .config(配置)
        。跑跑);

    config.$inject = ['$routeProvider', '$locationProvider'];
    功能配置($routeProvider,$locationProvider){
        $routeProvider
       。什么时候('/', {
           控制器:“家庭控制器”,
           templateUrl: 'AngularJS/home/home.view.html',
           控制器作为:'vm'
       })

       .when('/登录', {
           控制器:'登录控制器',
           templateUrl: 'AngularJS/login/login.view.html',
           控制器作为:'vm'
       })

       .when('/注册', {
           控制器:“注册控制器”,
           templateUrl: 'AngularJS/register/register.view.html',
           控制器作为:'vm'
       })

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

    run.$inject = ['$rootScope', '$location', '$http'];
    函数运行($rootScope,$location,$http,$cookies){

        //我想在这里使用$cookies,但似乎不可能。

        // 页面刷新后保持用户登录状态
        $rootScope.globals = $cookies.get('globals') || {};
        if ($rootScope.globals.currentUser) {
            $http.defaults.headers.common['Authorization'] = '基本' + $rootScope.globals.currentUser.authdata; // jshint 忽略:行
        }

        $rootScope.$on('$locationChangeStart', function (event, next, current) {
            // 如果未登录并尝试访问受限页面,则重定向到登录页面
            var restrictedPage = $.inArray($location.path(), ['/login', '/register']) === -1;
            var loggedIn = $rootScope.globals.currentUser;
            if (restrictedPage && !loggedIn) {
                $location.path('/login');
            }
        });
    }

})();

对不起,我的英语水平很差...(不是我的母语):·)

非常感谢。

【问题讨论】:

    标签: javascript angularjs cookies


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多