在AngularJS中围绕Restangular创建服务不会返回数组

时间:2014-09-12 16:03:23

标签: 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调试器中被调用...我怀疑它与承诺有关(我实际上并没有“得到”)。

更新

这可以作为一种服务:

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

1 个答案:

答案 0 :(得分:0)

服务需要返回promise,控制器将处理返回,因为这是异步的。你在那里的最后一部分做得很好:

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