Как запустить функцию на каждой странице в AngularJs

Я создал функцию, которая проверяет, существует ли файл cookie, и я хочу запустить эту функцию на каждой странице с помощью angularjs. Я просто не могу заставить функцию работать. Должен ли я включить модуль в новый контроллер?

Вот как я дошел:

  angular.module('myApp', ['ngCookies']).
    config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/products', {templateUrl: '/tmpl/products.html', controller: Ctrl}).
        otherwise({redirectTo: '/index'})
  }]).run( function($rootScope, $location) {

 //should I call it here?
 //validateCookie();


});

function validateCookie($scope, $cookieStore, $http){


}

Ответ 1

Я думаю, что было бы несколько способов решить это. Если вы хотите, чтобы эта проверка выполнялась каждый раз, когда вы меняете маршруты (это означает, что она будет запускаться при первом запуске приложения, а также на каждой странице, с которой вы работаете в приложении), вы можете сделать что-то вроде этого:

angular.module('myApp', ['ngCookies']).
config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/index', {templateUrl: '/tmpl/index.html', controller: IndexCtrl}).
        when('/products', {templateUrl: '/tmpl/products.html', controller: Ctrl}).
        otherwise({redirectTo: '/index'})
}])
.run(function($rootScope, validateCookie) {
    $rootScope.$on('$routeChangeSuccess', function () {
        validateCookie($rootScope);
    })
})
.factory('validateCookie', function($cookieStore, $http){
    return function(scope) {
        // Validate the cookie here...
    }
})

Если вам не нужно запускать каждое изменение маршрута, вы можете просто изменить функцию "run":

.run(function($rootScope, validateCookie) {
    validateCookie($rootScope);
})

Ответ 3

Я бы создал службу, которую вы хотите ввести в свои контроллеры. Сайт angular имеет хороший пример того, как это сделать: Создание служб. Обычно, если вы хотите использовать некоторую логику во многих местах, создание сервиса - это способ сделать это.