我是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调试器中被调用...我怀疑它与承诺有关(我实际上并没有“得到”)。
更新
这可以作为一种服务:
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 :(得分:0)
服务需要返回promise,控制器将处理返回,因为这是异步的。你在那里的最后一部分做得很好:
prTAService.prTAList().then(function(tas) {
$scope.therapyAreas = tas;
});