Ich habe zwei Controller, die wir ControllerA und ControllerB nennen können, beide teilen Daten von einem Service, den ich gemacht habe, indem ich Guides lese und herum lese. Ich bin mir nicht sicher, ob das, was ich sehe, korrekt ist und ich vielleicht einen Anbieter brauche.Korrekter Ansatz für das Laden von Service JSON zwischen zwei eckigen 1 Controllern (muss Ressource nur einmal laden)
Hier Mein Service:
angular.service("getJson", ['$http','$q', function($http,$q){
var deferred = $q.defer();
this.data = "";
$http.get('test.json')
.then(function(data){
deferred.resolve(data);
});
this.getResource = function(){
console.log("hey this has loaded!");
return deferred.promise;
}
}]);`
Dann in controllerA und ControllerB ich das Versprechen, lade ich gemacht. Sie sind gleich.
var jsonPromise = getJson.getResource();
jsonPromise.then(function(data){
$scope.rowData = data;
})
Ich sehe in meiner Konsole log die Ladung passiert zweimal! Ist das, was ein Anbieter ist? Gibt es nicht eine Möglichkeit zu sagen: "HEY this loaded lade schon wieder nicht hier ist die Ressource."
Ja getJson.getResource() wird jedes Mal aufgerufen. Was genau versuchen Sie zu vermeiden .... getJson.getResource() wird aufgerufen oder die $ http.get() wird aufgerufen oder beides? – jbrown
Sie machen bereits eine Server-Anfrage und teilen die gleiche Zusage – charlietfl
* "Ich sehe in meiner Konsolen-Log die Ladung passiert zweimal" * ... nur weil Sie 'getResource()' mehr als einmal aufrufen. Verschiebe das 'console.log()' zu 'then()' von '$ http' und sehe es nur einmal – charlietfl