2012-06-29 7 views
7

Ho bisogno di una funzione isLoggedIn() a cui sia i controller che i modelli hanno accesso (i modelli ne hanno bisogno per fare qualcosa come ng-show = "isLoggedIn()"). Qual'è il miglior modo per farlo?Il modo migliore per creare la funzione isLoggedIn in AngularJS a cui è possibile accedere in qualsiasi controller o modello?

Se la risposta è un servizio, è possibile accedere a un servizio all'interno di un modello oppure è necessario che ciascuno dei miei controller crei una funzione wrapper per il modello per visualizzarlo (in $ scope)?

risposta

5

Di solito ho un 'MainCtrl' nel tag del mio corpo e ci metto roba globale.

<body ng-controller="MainCtrl"> 
    ... 
</body> 

function MainCtrl($scope, authService) { 
    $scope.isLoggedIn = function() { 
    return authService.isLoggedIn(); 
    } 
} 

Quindi ogni altro ambito erediterà la funzione isLoggedIn.

È anche possibile inserire isLoggedIn su $ rootScope, ma mi piace in questo modo.

+0

Ah bene, non pensavo che i controller potessero avere sub-controller come quello. Funziona bene Lascerò la domanda aperta per un giorno o due in caso che qualcuno venga con una buona pratica diversa o altro, e in caso contrario contrassegnalo come accettato. –

+0

Lo stesso qui. Non conoscevo i sub-controller. Grazie a questo mi ha aiutato a ripulire alcune cose che stavo cercando di capire. – Jeff