2015-05-06 2 views
5

In questo momento ho impostato una Factory di autenticazione per l'esecuzione quando il mio stato passa a cloud. Sto cercando di passare il :cloud_id a quella funzione authCheck() ma non so come.Angularjs Passaggio della variabile tramite la funzione di risoluzione

qualcuno mi potrebbe punto nella giusta direzione per cambiare questo:

resolve: { authenticated: authenticated } 

Per qualcosa di simile:

resolve: { authenticated: authenticated(cloud_id) } 

Ecco il mio codice:

.factory('Auth', function($http, $state, $q) { 

    var factory = { authCheck: authCheck }; 
    return factory; 

    function authCheck(cloud_id) { 
     return $http.post('/auth/check', {id:cloud_id}); 
    } 

}) 
.config(function($stateProvider, $urlRouterProvider, $locationProvider) { 

    $locationProvider.html5Mode(true); 
    $urlRouterProvider.otherwise('/cloud'); 

    var authenticated = ['$q', 'Auth', '$rootScope', function ($q, Auth, $rootScope) { 
     var deferred = $q.defer(); 
     Auth.authCheck(cloud_id).then(function(){ deferred.resolve(); }, function(){ deferred.reject(); }); 
     return deferred.promise; 
    }]; 

    $stateProvider 

     .state('cloud', { 
      url: '/cloud/:cloud_id', 
      templateUrl: 'pages/templates/cloud.html', 
      controller: 'cloud', 
      resolve: { authenticated: authenticated } 
     }) 

}) 
+1

È possibile immettere $ route nella funzione di risoluzione e ottenere i parametri da lì: http://stackoverflow.com/a/13433335/373655 – rob

+0

Grazie a @rob, l'ultimo commento su 'ui-router' e' $ stateParams' ha aiutato molto – bryan

risposta

3

È può iniettare e utilizzare il $stateParams in questo modo:

var authenticated = ['$q', 'Auth', '$rootScope', '$stateParams', function ($q, Auth, $rootScope, $stateParams) { 
    var deferred = $q.defer(); 
    Auth.authCheck($stateParams.cloud_id).then(function(){ deferred.resolve(); }, function(){ deferred.reject(); }); 
    return deferred.promise; 
}]; 

Vedere this plnkr.

+0

Fantastico !! Grazie Reto – bryan

+0

Prego. –