Ich habe ein Problem beim Abrufen von Daten aus einem Service, der in meiner Ansicht enthalten ist. Ich habe ein Dienst definiert als solcheAngularJS Daten vom Dienst laden
app.factory('nukeService', function($rootScope, $http) {
var nukeService = {};
nukeService.nuke = {};
//Gets the list of nuclear weapons
nukeService.getNukes = function() {
$http.get('nukes/nukes.json')
.success(function(data) {
nukeService.nukes = data;
});
return nukeService.nukes;
};
return nukeService;
});
und mein Controller
function NavigationCtrl($scope, $http, nukeService){
/*$http.get('nukes/nukes.json').success(function(data) {
$scope.nukes = data;
});*/
$scope.nukes = nukeService.getNukes();
}
Wenn ich die $ http.get vom Controller verwenden die Daten auffüllt in Ordnung, aber wenn ich versuche, um die Daten zu nennen aus Der Service, ich bekomme nichts. Ich verstehe, dass die Abfrage asynchron ist, aber es ist mir schwer zu verstehen, wie die $ scope-Variable gefüllt wird, sobald die Daten zurückgegeben werden. Ich könnte $ rootscope verwenden, um ein Ereignis zu übertragen und darauf im Controller zu hören, aber das scheint nicht der richtige Weg zu sein, dies zu erreichen. Ich würde wirklich jeden Hinweis schätzen, wie man das richtig macht.
Das funktionierte aber kann ich fragen, warum? Ich nehme an, dass es etwas damit zu tun hat, dass .data ein Container für die JSON-Daten ist, anstatt zu versuchen, es direkt weiterzugeben? Übrigens, danke für die schnelle Antwort! – jamesamuir
Wenn es funktioniert, markieren Sie bitte die Antwort als –
markiert als beantwortet. Vielen Dank für die Erklärung. – jamesamuir