[解決済み] AngularJS : ファクトリーとは?
質問
私は、これまでずっと
Angular.js
について多くの作業を行ってきましたが、全体として、これは興味深く、強力なフレームワークであると感じています。
サービス vs. ファクトリー vs. プロバイダ vs. 価値について多くの議論がなされてきたことは知っていますが、私はまだ
Factory
が何なのか、まだかなり混乱しています。
ファクトリーは、他のStackOverflowの議論では以下のように定義されています。
ファクトリー
シンタックス
module.factory( 'factoryName', function );
結果 factoryName を注入可能な引数として宣言すると、module.factory に渡された関数参照を呼び出すことによって返される値が提供されます。
この説明は非常にわかりにくく、ファクトリーとは何かということの理解を深めることができません。
が一体何なのか、説明や実例をお持ちの方はいらっしゃいますか?
Factory
の代わりにこれを使うべき理由について、説明や実例があれば教えてください。
Service
,
Provider
なのか、それともその他なのか?
更新情報
A
service
リファレンスを保持する
への参照を保持します。
オブジェクトの
.
A
factory
は関数
を返す関数で、任意の
オブジェクトを返します。
A
provider
は関数
を返す関数で、任意の
関数
- ふぅ -
どのように解決するのですか?
私が理解したところでは、それらはすべてほとんど同じです。大きな違いは、その複雑さです。プロバイダーは実行時に設定可能で、ファクトリーはもう少し堅牢で、サービスは最も単純な形式です。
この質問をチェックアウトする AngularJS:サービス対プロバイダ対ファクトリ
また、この 要旨 は、微妙な違いを理解するのに役立つかもしれません。
出典 https://groups.google.com/forum/#!topic/angular/hVrkvaHGOfc
jsFiddleです。 http://jsfiddle.net/pkozlowski_opensource/PxdSP/14/
の作者です。 パウエル・コズロフスキー
var myApp = angular.module('myApp', []);
//service style, probably the simplest one
myApp.service('helloWorldFromService', function() {
this.sayHello = function() {
return "Hello, World!";
};
});
//factory style, more involved but more sophisticated
myApp.factory('helloWorldFromFactory', function() {
return {
sayHello: function() {
return "Hello, World!";
}
};
});
//provider style, full blown, configurable version
myApp.provider('helloWorld', function() {
// In the provider function, you cannot inject any
// service or factory. This can only be done at the
// "$get" method.
this.name = 'Default';
this.$get = function() {
var name = this.name;
return {
sayHello: function() {
return "Hello, " + name + "!";
}
};
};
this.setName = function(name) {
this.name = name;
};
});
//hey, we can configure a provider!
myApp.config(function(helloWorldProvider){
helloWorldProvider.setName('World');
});
function MyCtrl($scope, helloWorld, helloWorldFromFactory, helloWorldFromService) {
$scope.hellos = [
helloWorld.sayHello(),
helloWorldFromFactory.sayHello(),
helloWorldFromService.sayHello()];
}
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】AngularJSのスコーププロトタイピング/プロトタイピング継承のニュアンスとは?
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法