AngularJSアプリで非常に奇妙な動作が見られます。
単一の$broadcastが作成されると、(唯一の)レシーバーが2回起動されます。
アプリ全体への影響は、レシーバーが1回だけ起動されたかのようになります。(つまり、アイテムの1つだけがバスケットに追加されます)。
$ broadcastを2回起動すると(つまり、$ broadcastを起動するボタンを2回クリックすると)、レシーバーが4回実行されますが、2つのアイテムがバスケットに正しく追加されます。
ここでスプレッドシートのような再計算が行われていますか?$scope関数は'plain'javascript変数に影響を与える必要はありませんか?
私の問題は、を追加してalert
2回表示されていることです。
私はこれをデバッグするためにさらにいくつかの作業を行いました:
放送を受信した回数をカウントするカウンターを追加しました。
スコープ(ドルなし)がグローバルである場合、2倍の結果が得られます。そのスコープがCtlr関数に対してローカルである場合、2倍にならない結果が得られます。
どういうわけか、コントローラーの2つのインスタンスを作成できますか?
ファイアバグから、コントローラーから行われた$ http ajaxリクエストは1回しか発生しないことがわかります。そのため、私は非常に混乱しています。