1

ダイアログ ボックスをカプセル化するディレクティブがあり、周囲のスコープからほぼ完全に分離されています。それと通信する唯一の方法は、イベントを発生させることです。たとえば、「適用」、「保存」、「削除」、「照明を消す」などのダイアログ ボックス コマンドは、ボタンをクリックして、他のスコープが待機している対応するイベントを起動することで発行されます。

特定のイベントを処理するためにどのスコープが登録されているかがわからないため、ダイアログのコマンド イベントを からずっとブロードキャストすることにしましたが$rootScope、もちろんそれは機能します。ただし、イベント ハンドラーがモデルを変更した場合、ビューは更新されませ$apply$digest

ここに画像の説明を入力

ここに私のジレンマがあります:どこから電話すれば$digestいいですか? それとも、私は全体について非常に誤解していますか?

4

1 に答える 1

1

$broadcast は synchronousであるため、コードが AngularJS の「外部」で実行されている場合、$broadcast を呼び出すコードは、$broadcast を呼び出した後に $rootScope.$apply() を呼び出すことをお勧めします。(そのコードが Angular の「内部」で実行されている場合、 $apply() は必要ありません。)

于 2013-08-06T00:46:36.070 に答える