私はいくつかのデータを複数のHTTPリクエストでロードするページを持っています。その後、このページの中のいくつかのディレクティブでいくつかのロジックを実行する必要があります。
私は、このような状況のための最良の方法は何ですか?
今、コンテンツがロードされたことを示すbooleanフラグがあります。最初のアイデアは、これらのディレクティブでタイムアウトを使用してコンテンツがロードされているかどうかを確認し、そうであればこのロジックを実行することでした。
第2のアイデアは放送を利用することでした。私はこのアイデアが気に入っていますが、それらのディレクティブにはクロージャスコープがあるので、私が得る限り、$ rootScopeでブロードキャストする必要があります。そして、私が理解する限り、これは生産性の観点からは最良のアイデアではありません。
このような種類のタスクに最適なソリューションは何かを教えてください。子スコープでコールバックを呼び出す最良の方法は何ですか?
答えて
$ rootScope.emit()は、angular1の最適なアプローチです。これは
の$ rootscope.emit()のpubsubパターンで構築されている放送がダウンして浸透するので
ちょうど使用しているすべてのスコープがあなたができるコントローラで
$rootScope.$emit('topic');
in directive
$rootScope.$on('topic', function(){})
を発するブロードキャスト方式として高価ではありませんこれには$q serviceを使用してください。具体的には、 入力約束のすべてが解決されるときに解決される
は、単一の約束に複数の約束を組み合わせ
$q.all()
方法です。
利点は、それがそうDOMの階層に依存$スコープなど
私はあなたの考えを理解していません。ページのトップレベルスコープでq.all()を使用して、すべてのデータがロードされるタイミングを確認し、 "loaded"フラグをtrueに設定します。しかし、これはどのように私が複数の子ディレクティブでいくつかのロジックを実行するのに役立ちますか?確かに、私はarrayを使って約束をすべて破棄しようとする可能性がありますが、これが最もクリーンな解決策であるとは確信していません。 – Mikhail
ああ..私は参照してください。その場合、@ Piyush.kapoorが提案した '$ rootScope。$ emit'を使用してください –
- 1. nodejsからrest APIを呼び出す最良の方法は何ですか?
- 2. MVCでコントローラを呼び出す最も良い方法は何ですか?
- 3. Unity Containerでdisposeを呼び出す最も良い方法は何ですか?
- 4. 最良の方法でコールバック呼び出しを別のコードで囲む方法はありますか?
- 5. crossdomain ajax呼び出しを呼び出す最も良い方法は何ですか?
- 6. 通常のメソッドを非同期の方法で呼び出す最も良い方法は何ですか?
- 7. リスト内の子オブジェクトのメソッドを呼び出す最良の方法は?
- 8. 間隔でWCFサービスを呼び出す最良の方法
- 9. 別のスレッドで同じ関数を呼び出すPythonの最良の方法は何ですか?
- 10. 多くのWebサービスを呼び出す最良の方法は?
- 11. .NETコンソールからJSON WebServiceを呼び出す最良の方法
- 12. クロススレッドコードを呼び出す最良の方法は?
- 13. 1つのWCF呼び出しから複数のFaultExceptionsを返す最も良い方法は何ですか?
- 14. チェーンコードの中から別のチェーンコードを呼び出す最も良い方法は何ですか?
- 15. azure sqlからWebサービスを呼び出す最良の方法は何ですか?
- 16. これは、angularjsのコントローラを呼び出す最良の方法です
- 17. コールバックの内部でオブジェクトのキーを呼び出す方法は?
- 18. apiを同時に複数回呼び出す最良の方法は何ですか?
- 19. 特定の時間にObservableメソッドを呼び出す最も良い方法は何ですか?
- 20. 角度2の環境に基づいてモジュールを呼び出す最も良い方法は何ですか
- 21. x秒ごとにWindowsサービスを呼び出す/起動する最も良い方法は何ですか?
- 22. RESTメソッド呼び出しのロギングを行う最良の方法は何ですか?
- 23. 別のスレッドでiPhone CoreLocationを呼び出す最良の方法は?
- 24. 画像がキャプチャされた後、StartPreview()を呼び出す最も良い方法は何ですか?
- 25. 同期呼び出しを処理する最良の方法
- 26. ウェブページの外部APIを呼び出す最も良い方法
- 27. formValidationプラグインで検証コールバック関数を呼び出す方法は?
- 28. 別のコントローラのスコープ機能でカスタムディレクティブを呼び出す方法
- 29. Codeigniterで電子メールを設定する最良の方法は何ですか?
- 30. scipy.linalg.cython_blas.daxpyを呼び出す正しい方法は何ですか?
との同期を心配する必要はありません「ネイティブ角度」されています。ディレクティブは '$ rootScope'以外の共通の祖先でカプセル化されていますか?それらがすべて同じコントローラにカプセル化されていれば、 '$ scope。$ broadcast'を実行するだけで同じ効果を持ちますが、現在のスコープの子にしかできません。 –
祖先は同じページのコントローラーのスコープです。しかし、子スコープは階層内でかなり低くなる可能性があります。同様のページにはディレクティブが含まれており、このディレクティブにはこのブロードキャストを聴く別のディレクティブが含まれています。そういうわけで、問題は、ページのスコープでブロードキャストする方が良いか、rootScopeで出すのが良いのでしょうか? – Mikhail
'$ emit'はおそらく加入者に公開するだけなので、行く方法です。 '$ broadcast'はすべての子スコープを通過しなければなりません。 –