2013-08-22 24 views
19

Ho un problema con il servizio angolare JS.Utilizzare il servizio in Visualizza Angolare JS

devo semplice servizio:

angular.module('mainApp.services', []).factory('AuthService', 
function ($http) { 
    //var currentUser = null; 
    //var authorized = false; 

    //AutoLogin for testing 
    var currentUser={email: "[email protected]", id: "15"}; 
    var authorized=true; 

    // initial state says we haven't logged in or out yet... 
    // this tells us we are in public browsing 
    var initialState = false; 

    return { 
     initialState:function() { 
      return initialState; 
     }, 
     login:function (userData) { 
      //Call API Login 
      currentUser = userData; 
      authorized = true; 
      initialState = false; 
     }, 
     logout:function() { 
      currentUser = null; 
      authorized = false; 
     }, 
     isLoggedIn:function() { 
      return authorized; 
     }, 
     currentUser:function() { 
      return currentUser; 
     }, 
     authorized:function() { 
      return authorized; 
     } 
    }; 
}); 

poi ho un semplice controller

.controller('NavbarTopCtrl', ['$scope','$modal','AuthService',function($scope,$modal,authService) { 
    $scope.authService=authService; //IS good practice? 
    console.log($scope); 
}]) 

non posso utilizzare il mio servizio in vista. Ho fatto un trucco semplice e funziona bene.

$scope.authService=authService 

Ma come chiamare servizio senza che questo, a mio avviso (file HTML)?

risposta

16

L'utilizzo dei servizi all'interno delle visualizzazioni è in genere una cattiva pratica. La vista dovrebbe contenere solo una logica di presentazione. Nell'esempio, invece di passare l'intero servizio alla vista, è possibile provare a passare solo un oggetto utente. Ad esempio $scope.currentUser = authService.currentUser().

+0

Cerca qui per accedere al servizio. Funziona bene. https://github.com/robertjchristian/angular-enterprise-seed –

+7

Che dire quando hai un set di funzioni che vuoi richiamare dalla vista tramite qualcosa come 'ng-click'? È piuttosto noioso racchiudere ogni singola funzione che si desidera visualizzare nella vista all'interno di una funzione chiamante all'interno del controller. Pensieri? –

+12

myApp.configure (function ($ rootScope) {$ rootScope.foo = function() {console.log ("chiamami da ovunque;)")}); – luacassus

Problemi correlati