Angular实例化工厂

时间:2015-08-20 14:16:03

标签: angularjs refactoring

我对Angular有点困惑。我有两个工厂,代码看起来几乎相同,因为它们在db中对两个不同的对象执行CRUD操作,我想让它们干掉。

所以我有想法将通用逻辑移到单独的服务上,我希望它能像以下那样工作:

angular.module('app').factory('first',['commonService',function(commonService){
    return new commonService('someSpecificVariable');
}])

和服务:

angular.module('app').service('commonService',['someDep1',function(someDep1,someSpecificVariable){
    var something = someSpecificVariable;
}]);

我查看了提供程序,但我需要实例化一些东西。我怎样才能做到这一点?

换句话说,我希望创建工厂负责所有应用程序模块的所有crud操作请求,因为编写许多工厂只是为了处理http / crud不适合我。

好的我说得很糟糕。

解决方案 Is it possible and in good form to reuse the same data factory in Angular?

2 个答案:

答案 0 :(得分:0)

<强>工厂

它们允许您在控制器之间共享代码以及对API进行http调用。它们实际上是关于制作一些可重用的代码,您可以在控制器中实例化这些代码,使您的生活更轻松,控制器更清洁。

简单示例

.factory('FindFriend', function ($http, $rootScope) {
  return {
    find: function (phone) {
        return $http.get('http://130.211.90.249:3000/findFriend', { params: {phone:phone}})
    },
    add: function (id) {
        return $http.get('http://130.211.90.249:3000/addFriend', { params: {friendid:id, user_id: $rootScope.session} })
    },
    deleteFriend: function (id) {
        return $http.get('http://130.211.90.249:3000/deleteFriend', {params:{idfriends: id}})
    }
  }
})

<强>解释

因此,我们可以看到一个名为FindFriend的工厂。工厂有3种方法可以找到添加和删除。这些是不同的http调用(在你的代码中,他们不应该都是get方法,但这是我编写的一些旧代码)。

可以通过将它们添加到控制器的顶部然后调用FindFriend.add

之类的函数来实例化它们。

希望这能为你揭开工厂的一些亮点。

答案 1 :(得分:-1)

我知道工厂是如何工作的,但我不想为每个模块添加一堆功能。我希望提供服务,它将根据构造函数中提供的模块名称替换$ http调用的补丁。 ex'orders'将提出要求: $ http.post( '/ API' + '订单' + '/懒惰')...