2014-05-22 78 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,詳細闡述了我所總結的內容,您可能會覺得有用。

相關問題