この記事では主に angularjs のいくつかのサービスの詳細な分析について説明します。 angularjs サービスの使い方と違いについても紹介していますので、一緒にこの記事を見てみましょう
適切に階層化された Angular アプリケーションでは、コントローラー層は非常に薄くなければなりません。つまり、アプリケーション内のほとんどのビジネス ロジックと永続データはサービスに配置する必要があります。
このため、AngularJS の複数のプロバイダー間の違いを理解する必要があります。
プロバイダーによって作成された新しいサービスをインジェクションに使用できます。含まれるもの:
プロバイダ
工場
サービス
定数
価値
app.provider('myProvider', function(){ var a = ''; var func = function(){}; })
app.config(function(myProviderProvider){ myProvider.a = 'hello world'; })
2 番目の部分の変数と関数は $get を使用します。 () 関数が返すものには、プロバイダーを通過する任意のコントローラーでアクセスできます。
app.provider('myProvider', function(){ this.$get = function(){ return { foo: function(){}, a: a } } })
factory
factory はオブジェクトを返します。オブジェクトを作成し、それにプロパティを追加して、オブジェクトを返すだけです。コントローラーにファクトリを挿入して、そのすべてのプロパティを使用します。
app.factory('myFactory', function(){ var fac = {}; fac.a = 'hello world'; fac.foo = function(){}; return fac; })
service
service はコンストラクターに似ており、new キーワードを通じてオブジェクトをインスタンス化し、サービス オブジェクトが作成されるとこれが戻り値として返されます。
app.service('myService', function(){ var a = ''; this.setA = function(){}; this.getA = function(){}; this.foo = function(){}; })
constant
constant は定数を定義するために使用され、一度定義すると変更できません。どこにでも注入できますが、デコレータによって装飾することはできません。
app.constant('APP_KEY', 'a1s2d3f4')
定数と同様に、値を定義するために使用できます。ただし、定数との違いは、変更したり、デコレーターによって装飾したりできるが、構成に挿入できないことです。
app.value('version', '1.0')
列にアクセスして学習してください)
decorator は特別であり、プロバイダーではありません。ソース コードからわかるように、定数は Provider() メソッドを通じて作成されないため、定数を除く他のプロバイダーを修飾するために使用されます。
app.value('version', '1.0'); app.decorator('version', function ($delegate) { return $delegate + '.1'; })
次に、以前の myService サービスを使用したいが、必要な挨拶機能が欠けている場合。サービスを変更することはできますか?答えはいいえだ!ただし、装飾することはできます:
app.decorator('myService', function($delegate){ $delegate.greet = function(){ return "Hello, I am a new function of 'myService'"; } })
$delegate は実際のサービス インスタンスを表します。
サービスを装飾する機能は、特にサードパーティのサービスを使用する場合に非常に実用的です。現時点ではコードをプロジェクトにコピーする必要はなく、いくつかの変更を加えるだけで済みます。 ファクトリーの代わりにプロバイダーを使用する場合は?
プロバイダーはファクトリーの拡張バージョンです。構成可能なファクトリーが必要な場合は、プロバイダーを使用します。
この記事はここで終わります (さらに詳しく知りたい場合は、PHP 中国語 Web サイト
AngularJS ユーザー マニュアルの列にアクセスして学習してください)。ご質問がある場合は、以下にメッセージを残してください。
以上がangularjs にはサービスがいくつありますか? angularjs でのサービスの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。