【问题标题】:How to use cookies outside controller?如何在控制器外使用 cookie?
【发布时间】:2017-11-30 00:26:20
【问题描述】:

我在登录控制器中设置了 cookie。每当我试图在控制器之外获取 cookie 的值时,它都会引发错误。请检查一下我缺少什么。

控制器在我得到成功响应后,我正在设置 cookie

app.controller('AngularLoginController', ['$scope','$http','$cookies','$rootScope', function($scope, $http, 
$cookies,$rootScope) {   
    $scope.loginForm = function() {         
            $http.post("login.php", {
            'email' :$scope.inputData.email,
            'password':$scope.inputData.password
            }).success(function(data) {
                console.log(data);                  
                if ( data != 'wrong') {                     
                var loggedIn = $cookies.get('loggedIn');
                // Putting cookies
                $cookies['myCookieArray']= {'loggedIn':true,'username':data};
                getmycookiesback = $cookies['myCookieArray'];
                window.location.href = '#/userlist';
                $rootScope.display = true;                  
                $rootScope.username = getmycookiesback.username;                    
                } 
               else {
                $scope.errorMsg = "Invalid Email and Password";
                                }
        })
        }           
}]);

我登录后它会调用 AngularLoginController 并在成功响应后设置 Cookies 值。

外部控制器如果我比较 cookie 的值,则会抛出错误 getmycookiesback is not defined

var onlyLoggedIn = function ($location,$q,$cookies,$rootScope) { 
var deferred = $q.defer();
var url = $location.absUrl();
if (getmycookiesback.loggedIn === "undefined") { // Error on This line 
    deferred.reject();      
    window.location.href = '#/login';       
}
else{ 
    deferred.resolve(); 
    $rootScope.display = true;
    $rootScope.username = getmycookiesback.username;
    window.location.href = url;
    alert(getmycookiesback.username);
    //$cookies.remove('loggedIn');

    return true;
}
return deferred.promise;
};  

如果我在 Controller 中定义了它,为什么它是未定义的。 还有其他方法可以让我在控制器之外获取 cookie 的价值吗?

【问题讨论】:

    标签: angularjs cookies


    【解决方案1】:

    当然是未定义的;它似乎是该函数范围内的局部变量。

    您可能希望查看 Angular 服务以了解您想要全局访问的内容 - 您可能希望在服务上实现一个函数来执行此操作,或者将该信息本地存储在服务中并提供一个函数来访问它- 看看here

    【讨论】:

      猜你喜欢
      • 2011-06-06
      • 2016-08-24
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      相关资源
      最近更新 更多