問題タブ [angularjs-factory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - AngularJS : 工場とサービス?
2016年1月編集:これはまだ注目されているためです。これを尋ねて以来、私はいくつかの AngularJS プロジェクトを完了しました。私が主に使用したものについてはfactory
、オブジェクトを構築し、最後にオブジェクトを返しました。ただし、以下の私の声明は依然として真実です。
EDIT : 2つの主な違いを最終的に理解したと思います。デモ用のコード例があります。また、この質問は提案された複製とは異なると思います。複製では、サービスはインスタンス化できないと書かれていますが、以下で説明するように設定すると、実際にはインスタンス化できます。サービスは、ファクトリとまったく同じになるように設定できます。また、ファクトリがサービスをフェイルオーバーする場所を示すコードも提供しますが、これは他の回答ではないようです。
VaderService をそのように (つまり、サービスとして) セットアップした場合:
次に、コントローラーでこれを行うことができます:
サービスでは、コントローラーに注入された VaderService がインスタンス化されるため、VaderService.speak を呼び出すだけで済みますが、VaderService を module.factory に変更すると、コントローラー内のコードが機能しなくなります。これが主な違いです。 . factory では、コントローラに注入された VaderService はインスタンス化されないため、ファクトリをセットアップするときにオブジェクトを返す必要があります (質問の例を参照してください)。
ただし、ファクトリをセットアップするのとまったく同じ方法でサービスをセットアップでき (つまり、オブジェクトを返すようにします) 、サービスはファクトリとまったく同じように動作します。
この情報を考えると、service よりも factory を使用する理由がわかりません。service は factory ができるすべてのことを行うことができます。
以下の元の質問。
これは何度も聞かれていることは知っていますが、ファクトリとサービスの間に機能的な違いはまったく見られません。このチュートリアルを読みました: http://blogs.clevertech.biz/startupblog/angularjs-factory-service-provider
そして、それはかなり良い説明を与えるようですが、私は次のようにアプリを設定しました:
index.html
app.js:
controllers.js:
VaderService.js
その後、index.html を読み込むと、「Join the dark side luke」と表示されます。まさに予想通り。ただし、VaderService.js をこれに変更すると (module.factory ではなく module.service に注意してください):
次に、index.html をリロードします (キャッシュを空にして、ハード リロードを実行したことを確認しました)。これは、module.factory で行ったのとまったく同じように機能します。では、両者の実際の機能上の違いは何ですか??
javascript - 別の工場 AngularJS 内で工場を使用する
私はモジュールを持っています...
あとは工場
そして、別の工場
しかし、factory1 のいくつかの変数を factory2 内で使用したいのですが、factory1 を factory2 に注入するにはどうすればよいですか?
javascript - PouchDB Service Promise を使用した AngularJS 単体テスト
PouchDB ラッパーが注入された単体テストを試みているファクトリがあります。私が直面している問題は、モック PouchDB サービスが promise を返し、promise が解決されている間 (successCb を console.logout でき、正しいように見えます)、successCb 関数内のカルマの期待ステートメントが正しいコンソールであることです。ログ出力は、実行されていません。
console.log の出力が正常に機能する理由がわかりませんが、expect ステートメントが実行されません。この問題に関するヘルプをいただければ幸いです。
以下は、関連するコードのスニペットです。
【単体テストのセットアップ】
[カルマユニットテストコード]
angularjs - Why i can not get the update value in an AngularJs factory?
I am trying to update and then get the update value of an AngularJs factory, I am setting the value in one scope and trying to get it in another, I am setting a factory to handle the pop up messages in my app so instead of repeating my self I want just one factory to handle the messages.
the users controller
angularjs - ネストされたAngularモジュールを適切に注入する
エラーなしでトースターを注入すると、トースターで ngAnimate 注入が失敗します。私が知る限り、私はそれを正しく行ったので、ここで何を見逃したのかわかりません。
エラーメッセージ:
メインアプリファイル:
//最初の angular アプリケーション モジュールを作成します
工場ファイル:
トースター ファイルの一部:
スクリプトのリスト:
この問題の更新:
この問題で私が見つけたのは、.net アプリケーションで angular を使用しており、スクリプトはすべてアプリケーションのバンドラーを使用してレンダリングされていることです。スクリプト ファイルの参照は同じですが、トースターの参照は正しいです。同じスクリプト ファイルをソースとするタグをページに追加すると、正常に動作します。ただし、これは問題を解決するものではなく、原因をより深く理解するためのものです。
angularjs - サービスが値を返さない
ユーザー名を返すサービスを作成する作業を行っています。
ただし、このサービスをコントローラーに注入すると、未定義の値が返されます
http get リクエストが有効なユーザー名値を返すことを確認しました。私はAngularにまったく慣れていないので、ここで何が間違っているのか誰かが指摘できれば本当に感謝しています。
javascript - キャッチされていない TypeError: 未定義のプロパティ 'loadDataToGrid' を読み取ることができません
サーバー側からjQGridに渡されるデータをロードするために使用するコードがあります。AngularJS ファクトリ メソッドを使用して呼び出しを開始し、受信した json ドキュメントを返します。Uncaught TypeError: Cannot read property 'loadDataToGrid' of undefined
Chrome コンソールでエラーが発生します。
jQGrid にデータをロードするための JQuery 関数 :-
AngulaJS ファクトリ メソッド :-
html :-
jQueryメソッド内でURLを指定してデータを直接ロードすると、正常に機能します。
誰かが私がどこで間違ったのか指摘してください。
angularjs - random.org API を使用する Angularjs ファクトリ
こんにちは、random.org Web API からのデータを使用する角度のファクトリを作成しようとしています。JQueryなしでAngularを使用しています。私のアプリは、いくつかの CORS エラーを通知する Web サービスからのデータの読み込みに失敗します。使用するコードを以下に示します。どんな入力でも大歓迎です:
エラーは次のとおりです。
XMLHttpRequest はhttps://api.random.org/json-rpc/1/invokeを読み込めません。要求ヘッダー フィールド Content-Type は、Access-Control-Allow-Headers では許可されていません。
angular アプリは、次の構成で Cordova に格納されています。
javascript - AngularJS:コントローラーが更新されたファクトリー値を取得していません
ファクトリでオブジェクト プロパティを更新していますが、コントローラーで参照されているプロパティを更新していないようです。
このような工場があるとしましょう...
プロパティ「isloaded」は最初に false に設定され、$http 呼び出しが成功のコールバックを通過すると、最終的に false に設定されます。
そして、次のようなコントローラーがあります
このhtmlに関連付けられている
最終的には「成功」と言ってもらいたいのですが、htmlでテキストが変更されることはありません