Ich verwende einige Daten, die von einem RESTful-Dienst stammen, auf mehreren Seiten. Dafür benutze ich eckige Fabriken. Daher musste ich die Daten einmal vom Server abrufen und jedes Mal, wenn ich die Daten mit diesem definierten Dienst abrufe. Genau wie eine globale Variable. Hier ist das Beispiel:
var myApp = angular.module('myservices', []);
myApp.factory('myService', function($http) {
$http({method:"GET", url:"/my/url"}).success(function(result){
return result;
});
});
In meinem Controller verwende ich diesen Dienst als:
function myFunction($scope, myService) {
$scope.data = myService;
console.log("data.name"+$scope.data.name);
}
Es funktioniert gut für mich gemäß meinen Anforderungen. Das Problem hierbei ist jedoch, dass beim erneuten Laden meiner Webseite der Dienst erneut aufgerufen wird und Server angefordert werden. Wenn zwischenzeitlich eine andere Funktion ausgeführt wird, die vom "definierten Dienst" abhängt, wird der Fehler ausgegeben, als ob "etwas" undefiniert ist. Ich möchte also in meinem Skript warten, bis der Dienst geladen ist. Wie kann ich das machen? Gibt es das überhaupt in Angularjs?