Аз съм нов в 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;
});