在 Angularjs 中将工厂转换为服务

Convert factory to service in Angularjs

我正在使用 $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 参数

按照 "service" 定义风格,您应该阅读 Angular 文档。

无论如何,这就是您的方法:您已将 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;
        };
    }]);