我正在做一个有角度的项目,并且第一次使用$资源。目前,我有一项测试可以从数据库中获取数据,该服务具有对$ 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 } });
}
})();
我的问题是这个。我经常打电话给这些控制器中的各种控制器和方法。我不能全神贯注于如何构建一个服务,该服务使我可以使用列出的端点来调用它
我试图做这样的事情:
var services =[
getExercises: getExercises,
doSomething: doSomething
];
return service;
function getExercises (){
return $resource request here
}
但这是行不通的,我已经看过了,但是任何教程都只公开每种类型的请求中的一种。我将有几个对控制器的获取请求,其中一些具有不同的查询字符串。我还将查询不同的控制器。我内心的纯粹主义者告诉我,所有这些都归于一个地方。
用一个单独调用每个请求的方式来完成一项大型服务的好方法。我是否应该将它们分解为每个Web api控制器的服务。任何输入将不胜感激。
谢谢,约翰
如果要将资源包装在服务中,则可以执行以下操作:
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
});
}]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句