Je suis nouveau sur AngularJS et Restangular. Mais en tant que bon citoyen, je pensais essayer de créer certains services.
Tant que cela fonctionne et que je reçois un tableau qui remplit une liste déroulante:
Restangular.all("/ta/tas").getList().then(function(tas) {
$scope.therapyAreas = tas;
});
Mais lorsque je crée un service, puis l'injecte dans le contrôleur, je ne reçois rien:
.controller("prGPTCtrl",["$scope", "prTAService", "Restangular", function($scope, prTAService, Restangular) {
$scope.prGpts = {};
$scope.therapyAreas = {};
Restangular.setBaseUrl("resources/pr");
$scope.therapyAreas = prTAService.prTAList();
Un service:
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;
}
);
}
};
}]);
Je le vois être appelé dans Chrome Debugger ... Je suppose que cela est lié à des promesses (que je ne "comprends pas vraiment").
Mettre à jour:
Cela fonctionne comme un service:
prServices.factory("prTAService", ["Restangular", "$q", function prTAService(Restangular, $q) {
return {
prTAList : function(therapyAreas) {
Restangular.setBaseUrl("resources/pr");
return Restangular.all("/ta/tas").getList();
}
};
}]);
Et ça marche quand on l’appelle, je ne sais pas ce que je gagne ici!
prTAService.prTAList().then(function(tas) {
$scope.therapyAreas = tas;
});
Cordialement
je
Réponses:
0 pour la réponse № 1Le service doit renvoyer la promesse et le contrôleur gérera le retour car il s'agit d'une transaction asynchrone. Vous le faites bien dans la dernière partie là-bas:
prTAService.prTAList().then(function(tas) {
$scope.therapyAreas = tas;
});