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>
你嘗試調用註銷功能與像loginController.logout指定controllerName()裏面? – fabulaspb
@fabulaspb當'login()'函數正在工作時,'logout()'也應該正常工作,因爲它們都在同一個控制器中 – Satyadev
註銷函數似乎在loginForm函數 – Nora