Угловой выход из системы не очистит локальное хранилище

#javascript #angularjs #node.js #express

#javascript #angularjs #node.js #экспресс

Вопрос:

Итак, вот мой выход из системы при 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' amp;amp; !authentication.isLoggedIn()) {
    $location.path('/');
      }
    });
  }

  angular
    .module('meanApp')
    .config(['$routeProvider', '$locationProvider', config])
    .run(['$rootScope', '$location', 'authentication', run]);

})();
 

Всякий раз, когда я пытаюсь выйти из системы, localStorage по-прежнему определяется. Я попытался очистить хранилище. Попытался удалить его. Возможно, я не правильно делаю angular. Я новичок во всем этом, поэтому, пожалуйста, помогите. Спасибо!

Комментарии:

1. вы добавили точку останова или консоль. войдите, чтобы убедиться, что выполняется код выхода из системы?

Ответ №1:

Вы должны ввести $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');
         };

     }
 

Также у вас опечатка. Удалите верхний регистр ‘O’ при logOut()

 <a ng-click="logout()" href="">Logout</a>
 

Комментарии:

1. что ж, это имеет смысл. Я попытался ввести область действия, и локальное хранилище по-прежнему отображается как определено. Я понятия не имею, что делать, чтобы это исправить??

Ответ №2:

Попробуйте без window.

localStorage.removeItem('mean-token');

Скрипка

Комментарии:

1. Можете ли вы сделать скрипку, чтобы увидеть? Я использовал localStorage этот способ без проблем. С помощью скрипки вам будет легче помочь.

2. Посмотрите на мою скрипку

Ответ №3:

Вы пытались переместить функцию выхода из системы в HomeCtrl, чтобы проверить, работает ли она там?