2013-04-22 9 views
12

Ho creato una funzione che convalida se esiste un cookie e voglio eseguire questa funzione in ogni pagina utilizzando angularjs. Non riesco proprio a far funzionare la funzione. Dovrei metterlo in un nuovo controller?Come eseguire una funzione in ogni pagina in AngularJs

Questo è quanto ho raggiunto:

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){ 


} 

risposta

35

Penso che ci sarebbero un paio di modi per risolvere questo. Se vuoi far sì che questa convalida avvenga ogni volta che cambi percorso (il che significa che verrà eseguito all'avvio dell'applicazione e su ogni pagina che vai all'interno dell'applicazione), potresti fare qualcosa del genere:

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... 
    } 
}) 

Se non è necessario per l'esecuzione su ogni cambio rotta, basta solo cambiare la funzione "run":

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

mi piacerebbe creare un servizio che si vuole iniettare nel vostro controller. Il sito angolare ha un buon esempio di come fare questo: Creating Services. Normalmente, se si desidera utilizzare una logica in molti luoghi, la creazione di un servizio è il modo per farlo.

+0

La parte successiva della guida dev è di circa l'iniezione di un servizio in un controller http:. //docs.angularjs .org/guide/dev_guide.services.injecting_controllers. Anche questo sarebbe buono da leggere – fistoftheheavns

Problemi correlati