問題タブ [angular-promise]
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 + $q、複数の ajax 呼び出しが終了した後に何かを行う
ページの読み込み時にデータを読み込んでから、タスクを実行する必要があります。必要なデータを取得するために、複数の異なる ajax 呼び出しを実行します。しかし、タスクを実行するには、すべての ajax 呼び出しが完了していることを確認する必要があります。これが私がこれまでに行ったことです:
私の問題は、すべての ajax 呼び出しが終了した後、ブロック内のコードがthen(...);
実行されないことです。コンソールに次のようなものが表示されます。
私は何か間違ったことをしているに違いない。どうすれば思い通りに動作させることができますか?
編集:回答に記載されているように次のことを試しましたが、それでも同じ問題に直面しています。
angularjs - 最後のチェーンされた promise は実行されません
特定の順序で実行したいいくつかのメソッドを連鎖させました。2 番目のメソッドdeviseLogin()
は、次のメソッドで渡す必要がある URL を返しますredirect(url)
1 番目と 2 番目のメソッドが実行されますが、最後の からは何も聞こえませんredirect(url)
。私が間違っていることがわかりますか?
javascript - Angularjs、ネストされたプロミスを待ちます
3 つの promise を返す 3 つのサービスがありますが、3 つ目は 2 つ目のデータが必要なので、2 つ目の中で呼び出します。3 つの約束がすべて解決されるのを待ちたいのですが、これは私が実装した方法ですが、機能しません (最初と 2 番目の約束だけを待ちます)。
javascript - 呼び出し側オブジェクトに $http 応答を返す Angularjs
応答値を親オブジェクトに渡すにはどうすればよいですか。angularjs で http サービス呼び出しを行う実行者は? 私が持っているのは、次のような取得を行う BaseModel です。アイデアは、ベースモデル オブジェクト インスタンスに応答値が必要であるということです。ところで、ブロードキャストなどの使用を避けようとしています。
オブジェクトを呼び出すには
意味:
}];
実際の BaseModel:
angularjs - ディレクティブに注入されたAngular ui-router factory/serviceが空です
次のように ui-router を使用する角度のあるアプリがあります。
ui-router を使用して状態を定義しました。
appState サービスは次のように定義されています。
次のようにディレクティブを定義しました。
ディレクティブは、状態「app.state2.detail」のテンプレートの属性として適用されます。
appState を任意のコントローラーに挿入し、appState のプロパティにアクセスできます。ただし、示されているように appState をディレクティブに挿入すると、ディレクティブ内の空のオブジェクト、つまり {} になり、そこにある必要があるプロパティにアクセスできません。
この問題を回避するために、appState を最上位のコントローラー スコープに挿入して、state2DetailsCtrl のスコープまで継承されるようにしました。次に、scope['appState'] を介してディレクティブでアクセスすると、期待どおりに appState プロパティにアクセスできます。ただし、 appState をディレクティブに挿入するだけでよいと思っていましたか?
ディレクティブに挿入すると appState が空のオブジェクト {} になるのはなぜですか? ファクトリ/サービスをどのようにディレクティブに挿入しますか?
javascript - オブジェクトを返すAngularサービス?
私が理解している限り、Angularjs サービスはコンストラクター関数を渡すことによって作成されます。
Angular はこの関数をnew演算子で実行します。
私はこのサービスを利用していましたが、「この」インサイダーは見当たりません
実際、この関数はdeferred.promiseを返します
誰かがここで何が起こっているのかを明らかにできますか?
angularjs - AngularJS : $http promise を返すテスト ファクトリ
$http
GET リクエストとハンドラーを返す角度サービスをテストしようとしていますthen
が、関数内でロジックが実際に機能することをテストできませんthen
。以下は、サービス コードの基本的な切り詰められたバージョンです。
そして、ここにテストがあります:
呼び出しのロジックをテストするためにほとんどすべてを試したような気がするthen
ので、誰かが提案を提供できる場合は、大いに感謝します.
編集:私の問題は非標準の注入慣行によるものでもあったため、以下の回答はそれ以外で機能しました。
javascript - $http.get が何も返す必要がないのはなぜですか?
私はAngularアプリに取り組んでおり、サービスを呼び出すコントローラーがあります。コントローラーは Url をサービスに送信します。サービスはその URL に GET 要求を送信し、JSON を受信します。その JSON は、Http 要求の Uri です。その Uri を JSON から抽出し、ブラウザーをそれにリダイレクトします。
エンドポイントから返されるJSONは次のようになります
サービスコード
コントローラーコード
ご覧のとおり、ロギングを行って JSON を分解し、何が返されているか、返されたオブジェクトのプロパティにアクセスする方法を正確に把握しています。
私の質問は次のとおりです。
- 通話
return data;
で必要ないのはなぜですか?$http .success
どのような状況で必要ですか? - Controller メソッドで
$http .success
呼び出す必要がないように、呼び出しでデータ オブジェクトから特定のプロパティを返す方法はありますか?data.data.uri
または、コントローラーに返される前に、返された JSON ペイロードを変更できますか?
json - http.get() は逆シリアル化された JSON を取得しますが、HTTP 応答を返しますか?
私のAngularアプリには、独自のスコープをbaseControllerに注入することで定義された関数にアクセスできるbaseController.js
クラスとクラスがあります。これにより、すべてのコントローラー間で機能を共有できます。exampleController.js
baseController
getDataFromUrl()
から関数を呼び出そうとする場合を除いて、これは機能していexampleController
ます。デバッグ中に、それが呼び出され、呼び出しの関数にgetDataFromUrl()
入ることがわかります。その時点で、それは逆シリアル化された JSON オブジェクト (この場合はオブジェクトの配列) であることがわかりますが、コードが最終的にの関数に戻ったとき、最終的に受け取るのは逆シリアル化されたオブジェクトではなく、生の HTTP 応答データ。.success()
$http.get()
data
exampleController
initArray()
data
baseController.js:
exampleController.js:
がHTTP 応答としてdata
戻ってくるのはなぜですか? exampleController
デシリアライズされたJSONのままにしておきたい!