我刚刚开始使用Angular,我想知道是否有一个基本服务类是一个好主意,如果是这样,这是一个很好的方法呢?
var app = angular.module('UserList', ['ngResource']);
app.service('BaseService', function() {
return {
resource: '',
setResource: function(res) {
resource = res;
return this;
},
all: function() {
return resource.query();
},
find: function(id) {
return resource.get({id: id});
},
save: function(user) {
return resource.save(user)
}
}
});
app.service('UserService', ['$resource', 'BaseService', function($resource, $base) {
var resource = $resource('/users/:id', {id: '@id'});
return $base.setResource(resource);
}]);
app.controller('UserCtrl', ['$scope', 'UserService', function($scope, User) {
$scope.users = User.all();
$scope.addUser = function() {
$scope.users.push({
first_name: $scope.user.first_name
})
User.save($scope.user);
};
}]);
我的想法是,现在添加一个带有新端点的'PostService'非常简单:
app.service('PostService', ['$resource', 'BaseService', function($resource, $base) {
var resource = $resource('/posts/:id', {id: '@id'});
return $base.setResource(resource);
}]);
如果您对此方法有任何意见,或任何有关Angular的提示/建议(即策略,命名惯例等),我将非常感谢!
此致 克里斯
答案 0 :(得分:0)
拥有基本服务是否有意义,如果是这样做是一种好方法吗?
确定它的好设计。就像所有面向对象语言一样,这是一种很好的做法 使用继承。继承的主要好处是它为代码重用提供了正式的机制。作为重新分解过程的一部分,任何共享的业务逻辑都可以从派生服务移动到基础服务中,以通过避免代码重复来提高代码的可维护性。
如果您对此方法或任何提示/建议有任何意见......
关于$resource文档,$resource('/posts/:id', {id: '@id'});
,示例返回promise
。因为$resource
取决于$http
。并非所有服务都是异步的。如果我有很多服务,我会对它们进行排序(或通过添加一些后期修复来签名)这些服务是异步的。