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度。 我是新手,所以请帮助。 谢谢!

您必须将$scopevariables注入到您的控制器中,并在$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,检查它是否在那里工作?