2016-09-14 94 views
0

我遇到了這個問題的解決方案,但我可能沒有正確實施它,或者它不是解決方案。問題是我需要登錄兩次。 我試過使用$scope.$apply()但我不知道我是否正確使用它。 我的登錄控制器:必須登錄兩次:angular js

app.controller('loginctrl',['$rootScope','$scope','$http','$state','$cookies',function($scope,$rootScope,$http,$state,$cookies){ 
var cookietoken= $cookies.get('Token'); 

if(cookietoken) 
{ 
    alert('You are already logged in!'); 
    $state.go('home'); 
} 
else 
{ 
    $scope.user={ 
     username:"", 
     password:"", 
     rememberme:"" 
    }; 
    $scope.showerror=false; 

    $scope.login = function(){ 
     $http({ 
      method:"POST", 
      url:$rootScope.apiend+'login', 
      data:$scope.user 
     }) 
     .success(function(result){ 
      console.log(result); 

     }).error(function(){ 
      alert('something looks wrong.'); 
     }); 
    }; 
} 

}]);

編輯: 頁面最初進入錯誤的方法,第一次,並顯示第二次

+0

要實現這個代碼,以及如何究竟是什麼不起作用?瀏覽器的JavaScript控制檯中是否有錯誤消息? –

+0

沒有錯誤消息,我想通過此頁面登錄,它的工作原理除了一個原因:第一次嘗試登錄並在第二次登錄後頁面重新加載' – uttejh

+0

您是否在網頁上有CSRF並且支持在服務器端?請在表單上添加更多關於登錄頁面和服務器配置的詳細信息。 –

回答

0

我只是猜測成功的方法,但我相信,當login函數被調用,它成功地將您登錄到「服務器部分」上,但客戶端上的success方法無非是將結果寫入控制檯,而當您第二次嘗試時,它會檢查您是否已記錄(檢查cookietoken),如果是這樣,將您發送到「主頁」頁面。

如果是這樣的話,那麼你只需要添加行$state.go('home');一旦登錄已經成功,在success方法:

app.controller('loginctrl',['$rootScope','$scope','$http','$state','$cookies',function($scope,$rootScope,$http,$state,$cookies){ 
var cookietoken= $cookies.get('Token'); 

if(cookietoken) 
{ 
    alert('You are already logged in!'); 
    $state.go('home'); 
} 
else 
{ 
    $scope.user={ 
     username:"", 
     password:"", 
     rememberme:"" 
    }; 
    $scope.showerror=false; 

    $scope.login = function(){ 
     $http({ 
      method:"POST", 
      url:$rootScope.apiend+'login', 
      data:$scope.user 
     }) 
     .success(function(result){ 
      console.log(result); 
      $state.go('home');    /* <-- add this line here */ 

     }); 
    }; 
} 
}]); 
+0

nope!這不是它正在發生的事情。儘管我嘗試過。感謝您的努力! – uttejh

+0

你看到在JavaScript控制檯中打印的結果嗎?或者至少發送到服務器的ajax請求?是從第一次登錄嘗試設置的令牌cookie? –

+0

控制檯第一次保持空白,並且結果正在第二次打印,並且第一次嘗試也沒有設置cookie。我修改了一下我的代碼。是! ajax請求正在發送到服務器 – uttejh