ジョン、Y031であなたは次のように述べています:
たとえば、$ emit、$ Broadcast、または$ onを使用してイベントを公開およびサブスクライブする場合は、これらの使用をファクトリに移動し、コントローラーから呼び出すことを検討してください。
これを実装する方法について少し詳しく教えてください。 コードサンプルがいいでしょう!
私もこれを疑問に思い、次のstackOverflowの質問/回答を見つけました: http ://stackoverflow.com/questions/14056874/how-to-emit-events-from-a-factory
私は角度に関してはかなり初心者なので、これが悪い習慣である場合は、誰かに教えてください。 :)
それは、あなたが純粋な角度のあるプロジェクトにいるのか、レガシー/ハイブリッドプロジェクトにいるのかにもよると思います。
つまり、Angularフレームワークの内外で同じイベントを共有したい
pub / subをファクトリにすることで、$ emit、$ broadcastを置き換える代替実装が簡単になります。
例:http :
Y031の次の文章を理解するのに苦労しています。
必要な場合にのみ、コントローラーで$ scopeを使用することを検討してください。 たとえば、$ emit、$ Broadcast、または$ onを使用してイベントを公開およびサブスクライブする場合は、これらの使用をファクトリに移動し、コントローラーから呼び出すことを検討してください。
それで、上記の文の結論は、工場を使用して放送をまったく避けることですか? もしそうなら、私は別の処方を提案したいと思います。
私はコントローラー間の通信については考えていませんが、ログイン/ログアウトなどの主要な状態の変化について考えています。 ブロードキャストの適切なタスクのように感じる場合は、ほとんどすべてのコンポーネントにそのことを通知する必要がある可能性がありますか?
私が正しく理解していれば、あなたはこの@sebastianhaasを誤解していると思います。 スタイルガイドのこの一節は、 $emit
、 $broadcast
、または$on
の使用法をファクトリに置き換えるのではなく、ファクトリに移動することを提案しています。
@zachlysobeyの回答ありがとうございます! はい、でもどうやってそれを達成しますか? 特定のブロードキャストでコントローラーの値を更新したいとします。 それらの$on
工場に移動した場合、コントローラーに再度通知する方法がわかり
はっきりさせておきましょう...そこに紛らわしい文章がありました。 重要なのは、必要な場合にのみ$ scopeを使用することでした。 それはあなたが仕事を処理するためのスコープを持たなければならないときです。 これには、ブロードキャストまたは送信が含まれます。 メッセージが送信する必要がある場合に限り、これらはコントローラーで問題ありません。 ただし、他のオプションも検討することをお勧めします。
ここでは、scope.applyをコントローラーにも使用しないようにしたいので注意しようとしました。
私はその文を削除しました。
どうもありがとうございます!
最も参考になるコメント
ここで素晴らしい洞察http://stackoverflow.com/questions/11252780/whats-the-correct-way-to-communicate-between-controllers-in-angularjs/19498009#19498009