2017-11-22 19 views
0

ログインコントローラ内にCookieを設定しました。私がコントローラの外にあるクッキーの値を取得しようとすると、エラーが発生します。私が逃していることをこれをチェックしてください。コントローラの外部でCookieを使用するには?

コントローラ私は、私はそれがAngularLoginControllerを呼び出してログインし、成功応答の後にクッキーの値を設定した後、私はクッキー

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"; 
           } 
     }) 
     }   
}]); 

を設定しています成功応答を取得した後。私はコントローラでそれを定義した場合、それは未定義ですなぜ

コントローラ外部に私はそれがエラーgetmycookiesbackを投げクッキーの値を比較していた場合には、

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; 
}; 

が定義されていません。 私はコントローラの外でクッキーの価値を得ることができる別の方法はありますか?

答えて

1

もちろん、定義されていません。その関数スコープ内のローカル変数のように見えます。

グローバルにアクセスしたいものについては角度サービスを参照してください。これを行うためにサービスに関数を実装したり、その情報をサービス内にローカルに格納したり、それは見てくださいhere

関連する問題