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:
OptionFabrik
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!
OptionFabrik
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!