2015-08-20 63 views
0

我对Angular有些困惑。我有两个工厂,代码看起来几乎相同,因为他们在数据库中的两个不同的对象上执行CRUD操作,我想让它们变干。Angular instantiate工厂

所以我有想法,共同逻辑转移到单独的服务,我想它的工作原理类似的东西:

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对我来说看起来不太合适。

好吧,我描述得相当糟糕。

SOLUTIONIs it possible and in good form to reuse the same data factory in Angular?

+3

你的问题是什么? – rob

+0

Xxhczvhhmmbjnbbjmbijbmni nj –

回答

0

工厂

他们让你分享控制器之间的代码以及发出HTTP调用您的API。他们真的是要制作一些可重用的代码,您可以在控制器中实例化,以使您的生活更轻松,控制器更清洁。

简单的例子

.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调用(在你的代码中,它们不应该都是获取方法,但这是我写的一些旧代码)。

他们可以将它们添加到控制器的顶部,然后调用函数有像FindFriend.add

希望被实例化这揭示了工厂给你的一些情况。

+0

我会添加一个如何实际实例化工厂而不是如何定义工厂的例子。 – Stefan

-1

我知道工厂是如何工作的,但我不想添加一堆负责每个模块的功能。我希望提供服务,它将基于提供的模块名称在构造函数中将修补程序替换为$ http调用。 ex'orders'将发出请求: $ http.post('/ api'+'orders'+'/ lazy')...