gpt4 book ai didi

javascript - 设计 AngularJS 服务的更好方法

转载 作者:数据小太阳 更新时间:2023-10-29 04:08:12 26 4
gpt4 key购买 nike

我正在编写一个可以与 REST 服务器交互的 AngularJS 客户端应用程序。

为了管理客户端/服务器交互,我使用了 $resource抽象。实际上,我将每个资源都写成一个单独的 service并仅将其注入(inject)将要使用它的 Controller 中。

我已经开始使用 angularjs-seed 进行开发,所以在我分离的 services.js 文件中,我有越来越多的服务:

angular.module('testReqService', ['ngResource']).
factory('TestReq', function($resource){
return $resource('http://test-url.com/api/test', {}, {});
});
angular.module('registerService', ['ngResource']).
factory('Register', function($resource){
return $resource('http://test-url.com/api/user/new', {}, {});
});
//More services here...

一切正常,但我想知道这是否是最佳方法。

因此,最好为不同的 REST 请求编写单独的服务,并只将它们注入(inject)到需要它的 Controller 中,或者更好的方法是为每个请求编写一个具有不同方法和 URL 的服务要求?

最佳答案

我更喜欢第二种方法:

var resources = angular.module("myapp.resources", ['ngResource']);

resources.factory('Constants', [
function() {
return {
RESOURCE_URL: "http://www.example.com/rest"
}
}
]);

resources.factory('Rest', ['Constants', '$resource', function(C, $resource) {
return {
Users: $resource(C.RESOURCE_URL + '/users/:id', {
id: '@id',
}, {})
, Posts: $resource(C.RESOURCE_URL + '/posts/:user', {
user: '@'
}, {})
}
}]);

当您拥有多个资源时,在 Controller 中管理所有依赖项变得非常烦人。这样,您所要做的就是注入(inject)一个。在我看来,阅读 Controller 时也更容易理解:

$scope.user = Rest.Users.get({id: 1});

这样更容易理解

$scope.user = Users.get({id: 1});

关于javascript - 设计 AngularJS 服务的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18896535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com