Ho un meccanismo di registrazione in cui la variabile rootscope viene inviata tramite il servizio. Dopo il successo aggiorna il campo $rootScope.success
. Ma i servizi di angularjs sono dipendenti dalla callback. Il servizio aggiorna il rootscope.success ma la funzione esegue in sequenza il codice.Come gestire la richiamata in angularjs?
Come posso attendere che il servizio completi la risposta e quindi elaborare ulteriormente?
.controller('RegisterAccountCtrl', function ($scope,$rootScope,registerUser,$location) {
$rootScope.success = false;
$scope.registration = $rootScope.registration;
$scope.getEnterGeneratedCode = function(){
$rootScope.registration = $scope.registration;
registerUser.registerUser();
if($rootScope.success){
$location.path('/confirm');
}
}
E il servizio
all'interno.service('registerUser',function($http,$rootScope,$ionicLoading){
this.registerUser = function(){
$ionicLoading.show();
$http({
method: 'POST',
datatype:'json',
data:{obj:$rootScope.registration},
url: 'http://localhost/LoginService.asmx/CreateUser',
contentType: "application/json; charset=utf-8",
cache: false
}).success(function (data, status, headers, config){
if (status == '200') {
var obj = data;
$rootScope.success = true;
$ionicLoading.hide();
//alert(obj);
}
}).error(function (data, status, headers, config){
$ionicLoading.hide();
});
};
return this;
})
A meno che '$ rootScope .success' è usato al di fuori di questa chiamata, ora sembra non necessario. –
Corretto, aggiungerò una versione semplificata aggiornata –
@DavinTryon ha aggiunto una versione semplificata –