[解決済み] ServiceとFactoryで迷う
質問
私が理解しているように、ファクトリー内では、コントローラに注入されるオブジェクトを返します。サービス内部では、私は
this
であり、何も返しません。
私は、あるサービスが 常にシングルトン であること、そして 新しいファクトリーオブジェクト はすべてのコントローラでインジェクトされます。しかし、結局のところ、ファクトリーオブジェクトもシングルトンなのでしょうか?
デモのためのコード例です。
var factories = angular.module('app.factories', []);
var app = angular.module('app', ['ngResource', 'app.factories']);
factories.factory('User', function () {
return {
first: 'John',
last: 'Doe'
};
});
app.controller('ACtrl', function($scope, User) {
$scope.user = User;
});
app.controller('BCtrl', function($scope, User) {
$scope.user = User;
});
を変更する場合
user.first
で
ACtrl
ということになります。
user.first
で
BCtrl
も変更されます。
User
はシングルトンですか?
私の推測では、新しいインスタンスはファクトリーでコントローラに注入されるのでは?
解決方法は?
angularのサービスはすべてシングルトンです。 :
Docs(参照 シングルトンとしてのサービス ): https://docs.angularjs.org/guide/services
最後に、Angularのサービスはすべてアプリケーションシングルタンであることを認識することが重要です。つまり、1つのインジェクタにつき、1つのサービスのインスタンスしか存在しないのです。
基本的にサービスとファクトリーの違いは、以下の通りです。
app.service('myService', function() {
// service is just a constructor function
// that will be called with 'new'
this.sayHello = function(name) {
return "Hi " + name + "!";
};
});
app.factory('myFactory', function() {
// factory returns an object
// you can run some code before
return {
sayHello : function(name) {
return "Hi " + name + "!";
}
}
});
provideについて、こちらのプレゼンテーションをご覧ください。 http://slides.wesalvaro.com/20121113/#/
このスライドは、あるAngularJsのミートアップで使用されたものです。 http://blog.angularjs.org/2012/11/more-angularjs-meetup-videos.html
関連
-
[解決済み】Angularjsのng-viewが動作しない。
-
[解決済み】angularのonLoadとng-initの違いについて
-
[解決済み】Angularjs accordion ng-click on panel-header
-
[解決済み] プリフライト応答が成功しない
-
[解決済み] X-Frame-Options'を'SAMEORIGIN'に設定しているため、フレーム内での表示を拒否された。
-
[解決済み] createspyとcreatespyobjの違いは何ですか?
-
[解決済み] AngularJS 。scope.apply()呼び出し時の$digest already in progressエラーを防ぐ。
-
angularでのng-repeatとtrack by
-
[解決済み] AngularJS: ngRouteが動作しない。
-
[解決済み] AngularJSの.$on()とは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: window.initMap is not a function
-
[解決済み】Angular ui-routerで$stateメソッドを$stateChangeStart toStateとfromStateで使用する。
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] AngularJS の ng-disabled ディレクティブに式を指定しても動作しない
-
[解決済み] 新しい/分離されたスコープを求める複数のディレクティブ [ngController, ...] がある。
-
[解決済み] AngularJSの.$on()とは?
-
[解決済み] Jasmineの "callThrough "と "callFake() "の実用的な例が欲しい
-
[解決済み] angularJSの::の意味するところ
-
[解決済み] angular.serviceとangular.factoryの比較
-
[解決済み】AngularJS 。ファクトリーとサービス?重複