問題タブ [angularjs-service]

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.

0 投票する
1 に答える
576 参照

javascript - AngularJS の哲学 - サービスへの「窓」としてのコントローラー

あいまいなタイトルで申し訳ありません。

私は AngularJS コードの一部を再構築し、より「Angular」にしようとしてきましたが、このパターンがかなり出現することに気付きました。

基本的に、コントローラーはほとんどの場合、スコープにサービスへの参照を提供して、ビューがそれを使用できるようにするために存在します。

そのため、特定の共有データまたはサービスに依存するだけで、スコープを通じてそれらのサービスへの参照を利用できるようにするコントローラーがいくつかあります。

このデザインを使用するデメリットはありますか? 思考を改善できますか?これは「角度のある」方法ですか?

アドバイスをありがとう!

0 投票する
0 に答える
320 参照

angularjs - AngularJS:$httpなしで非同期AJAXリクエストを処理する適切な方法は何ですか?

サーバーからデータを取得するサービスがあるとします。非同期で、AngularJS $http サービスを使用していません。

Angular で非同期処理を行うときは、Promise を使用$qします。しかし、問題が 1 つあります。promise は の後にのみ解決され$digestます。

これを修正するには、次の 2 つの方法があります。

1)$timeout

2)$rootScope.$apply()

AngularJS$httpサービスでは、2 番目のバリアントが使用されます。

両方の違いは何ですか?また、そのようなことを行う適切な方法は何ですか?

実際に両方の方法を試すことができます: http://jsbin.com/otakaw/3/edit

0 投票する
4 に答える
25556 参照

javascript - シンプルな js コードから angularjs サービスを呼び出す

次の angularjs サービスがあります。

従来のjsコードからGetName関数を呼び出すにはどうすればよいですか?MyService

0 投票する
1 に答える
18676 参照

post - サービスとしての angular.js $http (または $resource) POST および transformRequest のリクエスト例

angular 1.1.5 を使用し、urlencoded データをバックエンドに渡す必要があります。ここからのソリューションでこれを機能させることができました: How can I post data as form data instead of a request payload?

これをコントローラーに埋め込むことに成功しましたが、'よりクリーンな' 方法は、$http オブジェクトの代わりにサービスと $resource を使用することです。このトピックの 1.1.2 以降の $resource で transformRequest を使用することは可能です: $resource transformResponse が機能して いませんが、機能する例が見つかりません。$resourceを使用してサービスオブジェクトとして上記のソリューションの例を提供できる人はいますか?

0 投票する
2 に答える
1422 参照

angularjs - AngularJS: サービスの手動登録

複数のウィジェットを含むページがあります。ページが読み込まれた後、URL を含むウィジェットのリストを取得します。次に、URL を ng-include します。

各ウィジェットには独自のコントローラーがあり<script>、ウィジェット html のタグを使用してロードされます。ウィジェット リストは動的であるため、ページの読み込み時にウィジェット .js ファイルを読み込むことができません。(そうすると、正常に動作します。) エラーが発生し続けます。

コントローラーユニットをテスト可能にするために、サービスで $http 呼び出しをラップしようとしています。

ここに私のHTMLがあります:

そして、これが私のfooWidget.jsです:(Widgetsページの読み込み時に読み込まれるファイルで定義されたモジュールがあります)

そして、次のエラーが表示されます。

angular ブートストラップ プロセスの完了後にサービスを定義しようとしているため、これが発生していると思います。

それが役に立ったら、プランカーを作ることができます。

アップデート

これまでの回答に感謝します。私の問題を説明するのに役立つプランカーを作成しました: http://plunker.co/edit/iKzwnlZ7bNDjmR05qGDC

コントローラーを手動で登録する方法を理解し、それをプランカーに含めました。

0 投票する
3 に答える
3412 参照

angularjs - サービスは非同期性を公開する必要がありますか?

データを非同期に取得するサービス ($http または $resource) を作成しています。最初は空の配列を返すことで、非同期であることを隠すことができますが、最終的にはデータが取り込まれます。

または、promise を返すことで非同期性を公開できます。

( Plunker - 上記の 2 つの実装を試してみたい場合。)

非同期性を公開することの潜在的な利点の 1 つは、メソッドにエラー ハンドラーを追加することでコントローラーのエラーを処理できることthen()です。ただし、アプリケーション全体のインターセプターで $http エラーをキャッチして処理する可能性があります。

では、いつサービスの非同期性を公開する必要があるのでしょうか?