2016-01-09 41 views
0

無法在登錄控制器內調用註銷功能。我使用ui-router具有簡單的登錄和註銷功能。函數未被角度調用錨定標記

我可以登錄並路由到其他頁面,但我無法撥打logout函數。我已經嘗試了所有可能的解決方案,如使用:

<li><a href ng-click="$event.preventDefault();logout()">Logout</a></li>  //only href 

<li><a href="" ng-click="$event.preventDefault();logout()">Logout</a></li> //empty href 

<li><a href ng-click="$event.preventDefault();logout()">Logout</a></li> //href with event 

button class="btn" ng-click="logout()">Logout</button>     //also button type 

然而,以上都不是打響了註銷功能。我猜想範圍或stateprovider有問題。

Stateprovider:

myApp.config(function ($stateProvider, $urlRouterProvider) { 

// default route 
$urlRouterProvider.otherwise("/Home"); 

// ui router states 
$stateProvider 
    .state('Home', { 
     url: "/Home", 
     views: { 
      content: { 
       templateUrl: 'views/HomePage.html', 
       controller: function ($scope) { 
       } 
      } 
     } 
    }) 
    .state('LoggedIn', { 
     url: "/LoggedIn", 
     views: { 
      'content': { 
       templateUrl: 'views/LoggedIn.html', 
       controller: function ($scope) { 
       } 
      } 
     } 
    }); 
}); 

登錄控制器:

myApp.controller('loginController', ['$scope', '$http', 'jwtHelper', '$localStorage', '$sessionStorage', '$state', '$window', function ($scope, $http, jwtHelper, $localStorage, $sessionStorage, $state, $window) 
{ 
    $scope.loginForm = function (email, password) { 
     if (email !== undefined && password !== undefined) { 
      $http.post('rs/loginResource/login', {email: email, password: password}) 
        .then(function (data) { 
         $localStorage.token = data.token; 
         $state.go('LoggedIn'); 
         console.log(data.data.token); 
        }) 
        .catch(function (error) { 
         console.log(error); 
        }); 
     } 

     $scope.logout = function() { 
      alert("logout called"); //it is not firing the alert here 
      delete $localStorage.token; 
      $state.go('Home'); 
     }; 
    }; 
}]); 

指數HTML:

<boyd> 
    <div id="wrap">   
     <div ui-view="content"></div> 
    </div> 
</body> 

主HTML:

<div ng-controller="loginController"> 
    <form class="form" method="post" ng-submit="loginForm(email, password)"> 
     <div class="form-group"> 
      <label class="sr-only">Email address</label> 
      <input type="email" ng-model="email" required> 
     </div> 
     <div class="form-group"> 
      <label>Password</label> 
      <input type="password" ng-model="password"> 
     </div> 
     <div class="form-group"> 
      <button type="submit">Sign in</button> 
     </div> 
    </form> 
</div> 

的loggedIn HTML:

<div ng-app="myApp"> 
    <nav> 
     <div class="container"> 
      <div ng-controller="loginController"> 
       <ul> 
        <li><a href ng-click="logout()">Logout</a></li> 
       </ul> 
      </div> 
     </div> 
    </nav> 
    <h2>Logged In....</h2> 
</div> 
+0

你嘗試調用註銷功能與像loginController.logout指定controllerName()裏面? – fabulaspb

+0

@fabulaspb當'login()'函數正在工作時,'logout()'也應該正常工作,因爲它們都在同一個控制器中 – Satyadev

+1

註銷函數似乎在loginForm函數 – Nora

回答

0

註銷功能似乎是登錄表單功能