我已经使用bootstrap和angularjs创建了一个登录html登录页面。我删除了bootstrap代码以使html代码更清晰。我有一个UserController(Angular控制器)。其中我实现了submitCredentials功能。这是html登录页面:
<div id="alertBox" data-ng-show="error" class="alert alert-danger">
<button type="button" data-ng-click="error = null;" class="close">×</button>
<strong>Oh no! </strong><span data-ng-bind="error"></span>
</div>
<div ng-controller="UserController">
<h4>Login</h4>
<form class="form-horizontal" role="form" name=loginForm" novalidate="novalidate">
<input type="email" name="email" class="form-control" id="inputEmail3" placeholder="Email" ng-model="credentials.email" required>
<input type="password" name="inputPassword" class="form-control" id="inputPassword" placeholder="Password" ng-model="credentials.password" ng-minlength=8 required>
<button ng-click="submitCredentials(credentials)" class="btn btn-primary">Sign in</button>
</form>
这是我的控制器代码:
$scope.submitCredentials = function(user) {
UserService.authenticate(user)
.success(function(data) {
$scope.data = data;
$scope.loading = false;
var authToken = data.token;
$rootScope.authToken = authToken;
if(authToken){
$rootScope.authenticated=true;
$location.path('/');
}
})
.error(function(data) {
$rootScope.error = "Failed to login";
$location.path('/users/login');
});
控制器功能运行良好。我使用UserService angularjs服务和对Spring MVC后端的make http调用。这项工作很好。
问题在于登录表单中的alertBox。
<div id="alertBox" data-ng-show="error" class="alert alert-danger">
<button type="button" data-ng-click="error = null;" class="close">×</button>
<strong>Oh no! </strong><span data-ng-bind="error"></span>
</div>
登录失败时会显示此警告框。 $ rootScope.error值设置。当我第一次尝试使用错误的凭据登录时。将显示alertBox,然后使用我的按钮关闭alertBox。当我再次尝试使用错误的凭据时,第二次不会显示alertBox。我已删除浏览器缓存(CTRL + F5)以在我使用错误凭据的sublit表单时显示alertBox。 如何在登录请求之前使用AngularJs删除缓存?