2016-05-12 3 views
1

私はAngularJSの方が新しく、私のコードを書いているときに特に.factory()のサービスがかなり大きくなっています。一例として、私は4つの非常に大きな約束を持っています。そして最後にそれらを$ q.all([promise1()、promise2()、promise3()、promise4()]にまとめます。しかし、すべてがきれいに動作しますが、工場が成長して成長するにつれて、コードの各セクションを管理することがますます困難になります。大きなサービスファクトリ()を小さなコードブロックに分割するにはどうすればよいですか?

私はこの問題を解決する方法を探しています巨大な.factory()と私は、外部ファイルから工場にコードを読み込むことができますか、または。ファクトを破るが、それらをすべて一度に処理するために$ q.all(...)を使用することができます...私が考えている/考えていない他の方法

これはコードを管理する上での自分の正気のためです...特定の約束を有効にしたり無効にしたりすることは、使用されていないコードのすべてのバイトをロードする必要はありません。

+1

あなたは、コード –

答えて

1

工場は、工場で注入することができます。大規模な工場は、小規模の工場に再植込可能です。

app.factory("promiseService1", function() { 
    return function promise1() { 
     var promise1; 
     //code here 
     return promise1; 
    }; 
});  

app.factory("promiseService2", function() { 
    return function promise2() { 
     var promise2; 
     //code here 
     return promise2; 
    }; 
}); 

これらの工場をトップ工場に注入します。

app.factory("megaService", function($q, promiseService1, promiseService2) { 
    return function megaPromise() { 
     var promise1 = promiseService1(); 
     var promise2 = promiseService2(); 
     return $q.all([promise1, promise2]); 
    } 
}); 

大工場のコードをより管理しやすくすることに加えて、個々の工場を独自に単体テストすることができます。

+0

のほんの一部を表示することができ、ありがとうありがとう、ありがとう。私はこれを自分で考えなかったのか分かりません。 – rolinger

+0

私は、アプリケーション定義で 'サブ'ファクトリを定義する必要があると仮定します。すなわち:angular.module( 'スターター'、[ 'イオン'、 'starter.controllers'、 'starter.services'、starter.subfactory1' 、 'starter.subfactory2'、 'starter.subfactory3を'])?そして、私は次のように定義する必要があります:angular.module( 'starter.subfactory1'、[]);各subfactoryXファイルの先頭に? – rolinger

+0

私の答えが示すように、すべての工場は1つのモジュールに含めることができます。モジュールは、モジュール階層に再集計することもできます。モジュールの再組み立ては別の問題です。 – georgeawg

関連する問題