/ / Създаване на услуга около Restangular в AnglarJS не се връща масив - angularjs, restangular

Създаването на услуга около Restangular в AnglarJS не връща масив - angularjs, restangular

Аз съм нов в AngularJS и Restangular. Но като добър гражданин си мислех, че ще се опитам да създам някои услуги.

Докато това работи и получавам масив, който попълва падащ списък:

Restangular.all("/ta/tas").getList().then(function(tas) {
$scope.therapyAreas = tas;
});

Но когато създам услуга и след това инжектирам услугата в контролера, не получавам нищо обратно:

.controller("prGPTCtrl",["$scope", "prTAService", "Restangular", function($scope, prTAService, Restangular) {

$scope.prGpts = {};
$scope.therapyAreas = {};


Restangular.setBaseUrl("resources/pr");

$scope.therapyAreas = prTAService.prTAList();

Обслужване:

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;
}
);
}
};
}]);

Виждам, че се нарича в Chrome Debugger ... Подозирам, че е свързан с обещания (които наистина не получавам).

Update:

Това работи като услуга:

prServices.factory("prTAService", ["Restangular", "$q", function prTAService(Restangular, $q) {
return {
prTAList : function(therapyAreas) {
Restangular.setBaseUrl("resources/pr");
return Restangular.all("/ta/tas").getList();
}
};
}]);

И това работи, когато го наричаш, не съм сигурен какво получавам тук!

prTAService.prTAList().then(function(tas) {
$scope.therapyAreas = tas;
});

за разбирането

аз

Отговори:

0 за отговор № 1

Услугата трябва да върне обещанието и контролерът ще обработи връщането, защото това е асинхронно. Вие го правите точно в последната част:

prTAService.prTAList().then(function(tas) {
$scope.therapyAreas = tas;
});