2014-05-22 51 views
0

我有这个服务我想使用,但它可能发生,我的应用程序的某些部分需要相同的服务,但有不同的参数内部使用。由于服务总是按照我的理解引用相同的实例,这意味着要么在手动执行操作之前手动编辑参数,要么将它们传递给每个函数。这会变得非常快,我想知道是否可以创建一个工厂来初始化我需要的不同版本的服务。我可以创建一个工厂来在AngularJS中创建服务吗?

这样的事情,比如:

function FooService(){ 
    this.setParams = function(params){ 
     ... 
    } 
}; 

function FooServiceFactory(){ 
    return{ 
     createService: function(name, params){ 
      var serv = new FooService(); 
      serv.setParams(params); 
      ServiceModule.service(name, serv); 
     } 
    } 
}; 

回答

0

您可以创建工厂为好。

app.factory("InstantiateMe", [function() { 
    return function(params) 
    { 
     // some code 
    }; 
}]); 
app.controller("Ctrl", ["InstantiateMe", function(InstantiateMe) { 
    var instance = new InstantiateMe({param: "value"}); 
}]); 

总之,工厂函数只返回:工厂。它的返回值可以是一个对象,一个函数或者在这个特定情况下是一个构造函数。您可以通过这种方式实例化所需服务的多个实例。

这是一个nice article on the subject,详细阐述了我所总结的内容,您可能会觉得有用。

相关问题