所以这是我在ng-click上的注销:(我的观点)
<div class="navbar navbar-default"><div class="container">
<div id="navbar-main">
<ul class="nav navbar-nav">
<li><a href="/">Home</a></li>
<li ng-show="navvm.isLoggedIn" ng-hide="navvm.logout"><a href="profile">{{ navvm.currentUser.name }}</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li ng-hide="navvm.isLoggedIn"><a href="login">Sign in</a></li>
<li ng-show="navvm.isLoggedIn"><a ng-click="logOut()" href="">Logout</a></li>
</ul>
</div>
然后我试图通过删除令牌来删除localStorage,如下所示:(控制器)
(function () {
angular
.module('meanApp')
.controller('logoutCtrl', logoutCtrl);
logoutCtrl.$inject = ['$location', '$window'];
function logoutCtrl($location, $window) {
logout = function() {
$window.localStorage.removeItem('mean-token');
};
}
})();
(控制器):
(function () {
angular.module('meanApp', ['ngRoute']);
function config ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: '/home/home.view.html',
controller: 'homeCtrl',
controllerAs: 'vm'
})
.when('/register', {
templateUrl: '/auth/register/register.view.html',
controller: 'registerCtrl',
controllerAs: 'vm'
})
.when('/login', {
templateUrl: '/auth/login/login.view.html',
controller: 'loginCtrl',
controllerAs: 'vm'
})
.when('/profile', {
templateUrl: '/profile/profile.view.html',
controller: 'profileCtrl',
controllerAs: 'vm'
})
.when('/logout', {
templateUrl: '/home/home.view.html',
controller: 'logoutCtrl',
})
.otherwise({redirectTo: '/'});
// use the HTML5 History API
$locationProvider.html5Mode(true);
}
function run($rootScope, $location, authentication) {
$rootScope.$on('$routeChangeStart', function(event, nextRoute, currentRoute) {
if ($location.path() === '/profile' && !authentication.isLoggedIn()) {
$location.path('/');
}
});
}
angular
.module('meanApp')
.config(['$routeProvider', '$locationProvider', config])
.run(['$rootScope', '$location', 'authentication', run]);
})();
每当我尝试注销时,仍然会定义localStorage。我试过清理存储空间。试着删除它。也许我没有做正确的角度。我是所有这一切的新手所以请帮忙。谢谢!
答案 0 :(得分:0)
您必须将$scope
变量注入控制器并在$scope
logoutCtrl.$inject = ['$location', '$window', '$scope'];//injecting the $scope
function logoutCtrl($location, $window, $scope) {
//defining logout function on the $scope
$scope.logout = function() {
$window.localStorage.removeItem('mean-token');
};
}
你也有错字。删除logOut()
<a ng-click="logout()" href="">Logout</a>
答案 1 :(得分:0)
答案 2 :(得分:0)
您是否尝试将注销功能移至homeCtrl,以检查它是否在那里工作?