我有一个简单的RESTful服务,如下所示:
services.factory('UserService', ['$resource, function() {
return $resource('...');
}]);
这种方式我必须这样调用:
UserService.get({id: userId}, function(response) {
// do something.
});
我希望能够做到这样的事情:
UserService.get(userId).then(function(response) {
// do something with data
});
有可能吗?我正在努力解决这个问题,最终总是不得不在我的控制器中使用$ promise.then()。我想在我的RESTful服务中“隐藏”$ promise。
答案 0 :(得分:0)
$resource
故意通过......嗯... $promise
公开承诺,因此您可以使用UserService
来抽象:
services.factory("UserService", ["$resource", function ($resource) {
var userService = $resource("...");
return {
get: function (id) {
return userService.get({id: id}).$promise;
}
}
});
答案 1 :(得分:0)
根据Todd Motto,你可以像这样封装你的服务:
"我们在函数内创建一个具有相同名称的Object。这有助于文档以及评论生成的文档。"
function AnotherService () {
var AnotherService = {};
AnotherService.someValue = '';
AnotherService.someMethod = function (idParam) {
return $resource(apiUrl + ":action/:id", {}, {
get: {method: 'GET', params: {id:idParam, action: 'get'}
};
return AnotherService;
}
angular.module('app')
.factory('AnotherService', AnotherService);