2013-10-11 104 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。並非所有的服務都是異步的。如果我有很多服務,我會對它們進行排序(或者通過添加一些修補程序來簽名)這些服務是異步的。

相關問題