使用Angular $ Resource使用多个api调用创建服务的角度方式是什么?

时间:2015-11-13 19:35:55

标签: angularjs

我正在开展一个有角度的项目,我第一次使用$ resource。我目前只是作为测试从我的数据库中获取数据,该服务只有一次调用$ resource

这是我的服务:

(function() {
"use strict";
angular.module("commonServices")
    .factory("ptaResource",
    ["$resource", ptaResource]);

function ptaResource($resource) {
    return $resource("http://localhost:55928/api/excercises", {}, { 'query': { method: 'GET', isArray: true } });
}
})();

我的问题是这个。我对这些控制器中的各种控制器和方法进行了很多调用。我无法理解如何构建一个允许我用列出的端点调用它的服务<​​/ p>

我尝试过这样的事情:

var services =[
    getExercises: getExercises,
    doSomething: doSomething
   ];
   return service;

    function getExercises (){
        return $resource request here
      }

但是这不起作用,我已经在线查看但是任何教程只暴露了每种类型的请求之一。我将向控制器发送几个请求,其中一些具有不同的查询字符串。我也将查询不同的控制器。我的纯粹主义者告诉我,所有这些都属于一个地方。

使用单独调用每个请求的方法来执行此大型服务的好方法是什么。我应该将它们分解为每个web api控制器的服务。任何意见都将不胜感激。

谢谢, 约翰

1 个答案:

答案 0 :(得分:1)

如果您想将资源包装在服务中,可以执行以下操作:

angular
    .module('commonServices', ['ngResource'])
    .factory('ptaResource', ['$resource', function($resource) {
        return $resource('http://localhost:55928/api/excercises/:excerciseId', {
            excerciseId: '@id'
        });
    }])
    .service('CommonService', ['ptaResource', function(ptaResource) {
        return {
            getExercises: function() {
                return ptaResource.query().$promise;
            }
        };
    }]);

然后你可以这样称呼它:

angular
    .module('app', ['commonServices'])
    .controller('SomeController', ['$scope', 'CommonService', function($scope, CommonService) {
        $scope.exercises = CommonService.getExercises();

        // or
        CommonService.getExercises().then(function(exercises) {
            $scope.exercises = exercises;
        }).catch(function(err) {
            // handle error here
        });
    }]);