#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:
Комментарии:
1. Можете ли вы сделать скрипку, чтобы увидеть? Я использовал
localStorage
этот способ без проблем. С помощью скрипки вам будет легче помочь.2. Посмотрите на мою скрипку
Ответ №3:
Вы пытались переместить функцию выхода из системы в HomeCtrl, чтобы проверить, работает ли она там?