Sto utilizzando alcuni dati provenienti da un servizio RESTful in più pagine. Quindi sto usando fabbriche angolari per questo. Quindi, ho richiesto di ottenere i dati una volta dal server e ogni volta che ottengo i dati con quel servizio definito. Proprio come una variabile globale. Ecco l'esempio:
var myApp = angular.module('myservices', []);
myApp.factory('myService', function($http) {
$http({method:"GET", url:"/my/url"}).success(function(result){
return result;
});
});
Nel mio controller Sto usando questo servizio come:
function myFunction($scope, myService) {
$scope.data = myService;
console.log("data.name"+$scope.data.name);
}
il suo bel lavoro per me come per le mie esigenze. Ma il problema qui è che quando ricarico nella mia pagina web il servizio verrà nuovamente chiamato e richieste per il server. Se tra qualche altra funzione si esegue che dipende dal "servizio definito", si dà l'errore come "qualcosa" non è definito. Quindi voglio aspettare nel mio script fino a quando il servizio non viene caricato. Come lo posso fare? Esiste lo stesso in Angularjs?
Questo ha risolto il mio problema !!! Per chiunque altro, disponevo di un menu a discesa che richiedeva i dati della chiamata ajax, quindi, una volta creato l'ambito, i dati non erano disponibili. Con questo differimento, l'ambito può essere assegnato per avere i dati provenienti dalla chiamata Ajax. –
@ mikel: Ho un'altra domanda qui. La tua chiamata a myFuction() tornerà immediatamente ma quella promessa. Cosa devo fare affinché la chiamata a myFuction() non ritorni finché la funzione .then() non termina l'esecuzione. 'function myFunction ($ scope, myService) { var myDataPromise = myService.getData(); myDataPromise.then (funzione (risultato) { $ scope.data = result; console.log ("data.name" + $ scope.data.name); }); console.log ("Questo verrà stampato prima di data.name allora. E non lo voglio."); } ' – Sujoy