AngularJS は、再利用可能なシングルトン オブジェクトであるサービスを提供します。 これらは、ユーザーの AngularJS アプリケーション間でコードを共有するために使用することができます。 また、ディレクティブ、フィルター、およびコントローラーに注入することができます。 この記事では、AngularJSのファクトリーを理解します。
- AngularJSのファクトリーとは何ですか?
- ServiceとFactoryの違い
- JavaScriptでのFactoryの例
AngularJSにおけるFactoryとは何か
Factory is an angular function which is used to return the values. オンデマンドの値は、サービスまたはコントローラーがそれを必要とするときはいつでも、ファクトリーによって作成されます。 一度値が作成されると、それはすべてのサービスとコントローラで再利用されます。
サービスを作成するためにファクトリーを使用することができます。
サービスとファクトリーの違い
- サービスは次のように定義することができる。
app.service('FirstService', function () {
this.sayHola = function () {
console.log('Hola');
};
});
The .service() method takes the name and the function that defines the service. We can inject it in the following way:
app.controller('AppController', function (FirstService) {
FirstService.sayHola(); // logs 'Hola'
});
- A factory…ファクトリ。 一方、次のように定義することができる。
app.factory('FirstService', function () {
return {
sayHola: function () {
}
});
factory() も名前とファクトリーを定義する関数を受け取るメソッドである。 サービスを注入するのと同じ方法で注入することができます。 サービスとファクトリーの大きな違いは、ファクトリーの場合は(thisを使う代わりに)オブジェクトリテラルを返すということです。 これは、サービスがコンストラクタ関数であるのに対し、ファクトリーはそうでないためです。
- 理解を深めるために、factory function() を見てみましょう。
function factory(name, factFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factFn) : factFn
});
}
上に示したコードで、名前と渡された factory function が使われます。 これは、同じ名前のプロバイダーと $get
メソッド (これはファクトリ関数です) を返します。 これは、インジェクターが特定の依存関係を要求されるたびに、$get()
メソッドを呼び出してプロバイダーにそのサービスのインスタンスを要求することに起因しています。
- FirstService を注入すると、ファクトリー関数が呼び出されます:
FirstServiceProvider.$get(); // return the instance of the service
- サービス コードについて:
function service(name, constructor) {
return factory(name, );
}
私たちが呼ぶとき service(), factory()
が実際に呼ばれるものです。 これは、コンストラクタによってオブジェクトをインスタンス化するようインジェクタに依頼する関数を渡すことで行われます。 もっと簡単に言うと、サービスは定義済みのファクトリーを呼び出します。
$injector.instantiate()
はコンストラクタ関数でObject.create()
を呼び出すのです。 これがサービスで使われる理由である。
JavaScriptでのFactoryの例
var firstModule = angular.module("firstModule", );
firstModule.factory("firstFactory", function() {
return "a value";
});
firstModule.controller("FirstController", function($scope, firstFactory) {
console.log(firstFactory);
});
ファクトリーに値を注入する
以下の方法でファクトリーに値を注入することができます。
var firstModule = angular.module("firstModule", );
firstModule.value("numberValue", 29);
firstModule.controller("FirstController", function($scope, numberValue) {
console.log(numberValue);
});
注意: ファクトリ関数自体ではなく、その関数が生成する値が注入されることに注意が必要です。
以上で、AngularJS でのファクトリーの記事を終了します。
世界中に25万人以上の満足した学習者のネットワークを持つ、信頼できるオンライン学習会社であるEdurekaのAngularトレーニングをチェックしてみてください。 このような場合、あなたは、あなたがそれを行うことができます。 Angularフレームワークの採用率が高いため、アプリケーションのパフォーマンス管理はコミュニティ主導で行われ、間接的に仕事の機会を増やすことにつながっています。 Angular認定トレーニングは、エンタープライズアプリケーション開発に関するこれらすべての新しい概念をカバーすることを目的としています。