我有一个负责导航的控制器,它检查cookie以及用户是否登录显示和隐藏导航菜单。
nav.js - controller
/* global app:true */
/* exported app */
'use strict';
/**
* @ngdoc overview
* @name WebAppApp
* @description
* # WebAppApp
*
* Main module of the application.
*/
var app = angular
.module('WebAppApp', [
'ngAnimate',
'ngAria',
'ngCookies',
'ngMessages',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch'
])
.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/login.html',
controller: 'loginCtrl',
// controllerAs: 'login'
})
.when('/home', {
controller: 'homeCtrl',
templateUrl: 'views/home.html',
resolve: {
"checkLoggedIn": function($location, $cookies, $rootScope) {
if (!$cookies.get('globals')) {
$location.path('/');
}
}
},
//controllerAs: 'home'
})
.when('/signup', {
templateUrl: 'views/signup.html',
controller: 'signupCtrl',
//controllerAs: 'home'
})
.otherwise({
redirectTo: '/'
});
});
//when app runs call this function.
app.run(function($rootScope, $route, $location){
//Bind the `$locationChangeSuccess` event on the rootScope, so that we dont need to
//bind in induvidual controllers.
$rootScope.$on('$locationChangeSuccess', function() {
$rootScope.actualLocation = $location.path();
});
$rootScope.$watch(function () {return $location.path()}, function (newLocation, oldLocation) {
if($rootScope.actualLocation === newLocation) {
alert('Why did you use history back?');
alert($rootScope.actualLocation);
if($rootScope.actualLocation=='/'){
//clear cookie
}
}
});
});
但问题是,如果用户点击回来,他们最终会进入登录页面。 nav.js控制器不会重新加载,这意味着用户登录时显示的菜单显示在登录页面上。
到目前为止,我已经检测到用户点击的时间,如下所示:
app.js
{{1}}
一旦我检测到用户返回到登录页面或导航栏不应出现的其他页面,我基本上想重新加载nav.js控制器。
我怎样才能做到这一点?
由于