問題タブ [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.
javascript - AngularJS の哲学 - サービスへの「窓」としてのコントローラー
あいまいなタイトルで申し訳ありません。
私は AngularJS コードの一部を再構築し、より「Angular」にしようとしてきましたが、このパターンがかなり出現することに気付きました。
基本的に、コントローラーはほとんどの場合、スコープにサービスへの参照を提供して、ビューがそれを使用できるようにするために存在します。
そのため、特定の共有データまたはサービスに依存するだけで、スコープを通じてそれらのサービスへの参照を利用できるようにするコントローラーがいくつかあります。
このデザインを使用するデメリットはありますか? 思考を改善できますか?これは「角度のある」方法ですか?
アドバイスをありがとう!
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
javascript - シンプルな js コードから angularjs サービスを呼び出す
次の angularjs サービスがあります。
従来のjsコードからGetName
関数を呼び出すにはどうすればよいですか?MyService
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を使用してサービスオブジェクトとして上記のソリューションの例を提供できる人はいますか?
angularjs - AngularJS: サービスの手動登録
複数のウィジェットを含むページがあります。ページが読み込まれた後、URL を含むウィジェットのリストを取得します。次に、URL を ng-include します。
各ウィジェットには独自のコントローラーがあり<script>
、ウィジェット html のタグを使用してロードされます。ウィジェット リストは動的であるため、ページの読み込み時にウィジェット .js ファイルを読み込むことができません。(そうすると、正常に動作します。) エラーが発生し続けます。
コントローラーユニットをテスト可能にするために、サービスで $http 呼び出しをラップしようとしています。
ここに私のHTMLがあります:
そして、これが私のfooWidget.jsです:(Widgets
ページの読み込み時に読み込まれるファイルで定義されたモジュールがあります)
そして、次のエラーが表示されます。
angular ブートストラップ プロセスの完了後にサービスを定義しようとしているため、これが発生していると思います。
それが役に立ったら、プランカーを作ることができます。
アップデート
これまでの回答に感謝します。私の問題を説明するのに役立つプランカーを作成しました: http://plunker.co/edit/iKzwnlZ7bNDjmR05qGDC
コントローラーを手動で登録する方法を理解し、それをプランカーに含めました。
angularjs - サービスは非同期性を公開する必要がありますか?
データを非同期に取得するサービス ($http または $resource) を作成しています。最初は空の配列を返すことで、非同期であることを隠すことができますが、最終的にはデータが取り込まれます。
または、promise を返すことで非同期性を公開できます。
( Plunker - 上記の 2 つの実装を試してみたい場合。)
非同期性を公開することの潜在的な利点の 1 つは、メソッドにエラー ハンドラーを追加することでコントローラーのエラーを処理できることthen()
です。ただし、アプリケーション全体のインターセプターで $http エラーをキャッチして処理する可能性があります。
では、いつサービスの非同期性を公開する必要があるのでしょうか?