2013-10-11 155 views
0

我刚刚开始使用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

是否有意义有一个基础服务,如果是这样,这是做这件事的好方法吗?

肯定它的好设计。像所有面向对象的语言一样,它的好习惯 使用继承。继承的主要好处是它提供了代码重用的正式机制。作为重新分解过程的一部分,任何共享的业务逻辑都可以从衍生服务转移到基本服务中,以便通过来提高代码的可维护性,避免代码复制

如果您对这种做法任何提示/建议的任何意见,或...

问候$resource文档中,$resource('/posts/:id', {id: '@id'});,从示例返回promise。因为$resource取决于$http。并非所有的服务都是异步的。如果我有很多服务,我会对它们进行排序(或者通过添加一些修补程序来签名)这些服务是异步的。

相关问题