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 }
})
})
È possibile immettere $ route nella funzione di risoluzione e ottenere i parametri da lì: http://stackoverflow.com/a/13433335/373655 – rob
Grazie a @rob, l'ultimo commento su 'ui-router' e' $ stateParams' ha aiutato molto – bryan