Angular - Best Practice zum Abrufen von Daten aus einer Factory-Methode

Ich suche nach Informationen, wie ich am besten Daten aus einer lokalen JSON-Datei abrufen und die Antwort verarbeiten kann. Nachdem ich durch Stack Overflow geblättert habe, habe ich ein paar gemischte Gedanken, da ich mehrere Möglichkeiten gesehen habe, das Gleiche zu tun (obwohl keine Erklärung vorliegt, warum einer bevorzugt werden kann oder nicht).

Im Wesentlichen habe ich eine Angular-App, die eine Factory verwendet, um Daten aus einer JSON-Datei abzurufen. Ich warte darauf, dass die Antwort in meinem Controller aufgelöst wird, bevor ich sie in meiner HTML-Datei verwende, ähnlich der folgenden:

Option

Fabrik

comparison.factory('Info', ['$http', function($http) {
var retrievalFile = 'retrievalFile.json';

return {
 retrieveInfo: function() {
  return $http.get(retrievalFile);
 }
}

}]);

Regler

comparison.controller('comparisonController', ['$scope', 'Info', function($scope, Info) {

Info.retrieveInfo().then(function(response) {
  $scope.info = response.data;
});

}]);

Mein Hauptstreitpunkt ist es, herauszufinden, wann es am besten ist, auf die Antwort zu warten, oder ob es überhaupt darauf ankommt. Ich spiele mit der Idee, dass das Werk das erfüllte Versprechen zurücksendet, und warte, bis der Controller auch die Daten abruft. Meiner Ansicht nach ist es am besten, alle Daten, die aus dem Controller abgerufen werden, in die Fabrik zu abstrahieren. Ich bin mir jedoch nicht sicher, ob dies dazu führt, dass darauf gewartet wird, dass die tatsächlichen Daten innerhalb der Fabrik zurückgegeben werden. Vor diesem Hintergrund bin ich verwirrt, ob ich mich für Option 1 oder Option 2 entscheide, und würde mich über Feedback von erfahreneren / qualifizierten Entwicklern sehr freuen!

Option

Fabrik

comparison.factory('Info', ['$http', function($http) {
var retrievalFile = 'retrievalFile.json';

return {
  retrieveInfo: function() {
    return $http.get(retrievalFile).then(function(response) {
      return response.data;
    });
  }
}

}]);

Regler

comparison.controller('comparisonController', ['$scope', 'Info', function($scope, Info) {

Info.retrieveInfo().then(function(response) {
  $scope.info = response;
});

}]);

Vielen Dank für jede Eingabe / Vorschläge im Voraus!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage