在 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;
};
}]);
我正在使用 $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;
};
}]);