成功登录后,在标题部分中看不到注销按钮,但是当我刷新页面时它会变得可见,之后我可以删除cookie。如何在不刷新页面的情况下使其工作?这是AngularJS中的单页应用程序。
的index.html
<div class="container" ng-controller="loginController">
<div class="row">
<ul class="top-bar-link top-bar-link-left">
<li><i class="fa fa-phone"></i> Call us: 090 456 7823</li>
<li><i class="fa fa-exchange"></i> 30 Days Exchange Policy</li>
</ul>
<ul class="top-bar-link top-bar-link-right dot">
<li><a href="#checkout" >Checkout</a></li>
<li><a href="#compare">Compare</a></li>
<li><a href="#sign_up" ng-show="!isauthentication">Sign up</a></li>
<li><a href="#login" ng-show="!isauthentication">Login</a></li>
<li><a href="" ng-show="isauthentication" ng-click="logout()" >Logout</a></li>
</ul>
</div>
</div>
logincontroller.js
app.controller('loginController', [
'$scope',
'$location',
'datafactory',
'$cookieStore',
function($scope, $location, datafactory, $cookieStore) {
var keycookie;
$scope.status;
$scope.customers;
$scope.isauthentication = false;
init();
function init() {
if ($cookieStore.get('keycookie') != null) {
$scope.isauthentication = true;
console.log("print");
} else {
$scope.isauthentication = false;
console.log("falseprint");
}
}
$scope.login = function() {
datafactory.postLogin($scope.email, $scope.password).then(
function(response) {
if (response.data.success == true) {
$cookieStore.put('keycookie',response.data.key);
$cookieStore.put('emailcookie',$scope.email);
var keycookie = $cookieStore.get('keycookie');
console.log(keycookie);
var emailcookie = $cookieStore.get('emailcookie');
console.log(emailcookie);
init();
console.log("login success");
$location.path("/home");
}
}, function(error) {
window.location.href = "#/login";
});
}
$scope.logout = function() {
if ($cookieStore.get('keycookie') != null) {
$cookieStore.remove('keycookie');
init();
}
init();
}
} ]);
答案 0 :(得分:0)
试试这个:
function init() {
$timeout(function() {
if ($cookieStore.get('keycookie') != null) {
$scope.isauthentication = true;
console.log("print");
} else {
$scope.isauthentication = false;
console.log("falseprint");
}
});
}
这将等待任何现有的摘要周期完成,然后触发一个新的,以便使用最新值更新当前作用域。
也试试这个:
$timeout(function() {
$location.path("/home");
});