0

使用したいこのサービスがありますが、アプリケーションの一部で同じサービスが必要であるが、内部で使用するパラメーターが異なる場合があります。私が理解している限り、サービスは常に同じインスタンスを参照するため、これは、アクションを実行する前に手動でパラメーターを編集するか、すべての関数に渡す必要があることを意味します。これは非常に速く厄介になるため、必要なサービスのさまざまなバージョンを初期化するためのファクトリを作成できるかどうか疑問に思っていました。

たとえば、次のようなものです。

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

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

1 に答える 1

0

工場も作れます。

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

つまり、factory 関数はまさにそれを返します: ファクトリです。その戻り値は、オブジェクト、関数、またはこの特定のケースではコンストラクターです。このようにして、目的のサービスの複数のインスタンスをインスタンス化できます。

これは、私が要約したことを詳しく説明している、このテーマに関する素晴らしい記事です。役に立つと思います。

于 2014-05-22T08:37:44.283 に答える