我正在开展一个有角度的项目,我第一次使用$ 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控制器的服务。任何意见都将不胜感激。
谢谢, 约翰
答案 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
});
}]);