在Angularjs将工厂转换为服务

时间:2015-05-12 02:40:32

标签: angularjs angularjs-service angular-services

我正在使用$resource从服务器获取一个工作正常的json:

topicServices.factory('Topic', ['$resource',
  function($resource){
    return $resource('http://localhost/topic_api_response.json', {}, {
      fetchData: {method:'GET', isArray:true}
    });
  }]);

但是,现在我想通过执行以下操作将此工厂转换为服务:

topicServices.service('Topic', ['$resource',
    function($resource) {
        this.fetchData = function() {
            var resp = $resource('http://localhost/topic_api_response.json');
            return resp;
    };
}]);

这样做,我无法确定在何处指定请求方法(GET/POST)以及在哪里提供GET/POST参数

1 个答案:

答案 0 :(得分:2)

按照“服务”定义的方式,你应该阅读Angular Docs。

无论如何,你要怎么做:你已经将fetchData作为一种方法分离出来,这似乎达到了一个http GET。因此,您可以按如下方式编写代码。

topicServices.service('Topic', ['$http',
    function($http) {
        this.fetchData = function() {
            var resp = $http.get('http://localhost/topic_api_response.json');
            return resp;
    };
}]);

如果你想使用$ resource,请按如下所示进行包装:

topicServices.service('Topic', ['$resource',
        function($resource) {
            this.myResource = function() {
                var resp = $resource('http://localhost/topic_api_response.json',params,{fetchData:{}});
                return resp;
        };
    }]);