Angular Logout不会清除本地存储
所以这里是我登出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仍然定义。 我试过清理存储。 试图删除它。 也许我没有做正确的angular度。 我是新手,所以请帮助。 谢谢!
您必须将$scope
variables注入到您的控制器中,并在$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()
上的“O”大写
<a ng-click="logout()" href="">Logout</a>
尝试没有窗口。
localStorage.removeItem('mean-token');
小提琴
你有没有尝试移动注销functionhomeCtrl,检查它是否在那里工作?