按下时如何重新加载控制器(角度js)

时间:2015-08-18 15:56:26

标签: javascript angularjs

我有一个负责导航的控制器,它检查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控制器。

我怎样才能做到这一点?

由于

0 个答案:

没有答案