Jestem nowy w AngularJS i Restangular. Ale będąc dobrym obywatelem, myślałem, że spróbuję stworzyć jakieś usługi.
Gdy to działa i otrzymuję tablicę z powrotem do listy rozwijanej:
Restangular.all("/ta/tas").getList().then(function(tas) {
$scope.therapyAreas = tas;
});
Ale kiedy tworzę usługę, a następnie wstrzykuję usługę do kontrolera, nic nie otrzymuję:
.controller("prGPTCtrl",["$scope", "prTAService", "Restangular", function($scope, prTAService, Restangular) {
$scope.prGpts = {};
$scope.therapyAreas = {};
Restangular.setBaseUrl("resources/pr");
$scope.therapyAreas = prTAService.prTAList();
Usługa:
prServices.factory("prTAService", ["Restangular", "$q", function prTAService(Restangular, $q) {
return {
prTAList : function(therapyAreas) {
var therapyAreas = {};
Restangular.setBaseUrl("resources/pr");
Restangular.all("/ta/tas").getList().then(function(tas) {
therapyAreas = tas;
return therapyAreas;
}
);
}
};
}]);
Widzę, że jest on wywoływany w Chrome Debugger ... podejrzewam, że jest to związane z obietnicami (których tak naprawdę "nie dostaję").
Aktualizacja:
Działa to jako usługa:
prServices.factory("prTAService", ["Restangular", "$q", function prTAService(Restangular, $q) {
return {
prTAList : function(therapyAreas) {
Restangular.setBaseUrl("resources/pr");
return Restangular.all("/ta/tas").getList();
}
};
}]);
I działa to, gdy je nazywamy, nie jestem pewien, co tu zyskuję!
prTAService.prTAList().then(function(tas) {
$scope.therapyAreas = tas;
});
pozdrowienia
ja
Odpowiedzi:
0 dla odpowiedzi № 1Usługa musi zwrócić obietnicę, a kontroler będzie obsługiwał zwrot, ponieważ jest to asynchroniczne. Robisz to dobrze w ostatniej części:
prTAService.prTAList().then(function(tas) {
$scope.therapyAreas = tas;
});