14

をリッスンするコントローラーがあり$scope.$on、トリガーされるとポップアップ ウィンドウが表示されます。$rootScope.$broadcast他のいくつかのコントローラーのメソッドから、100% の時間で動作します。しかし、そのうちの1つは機能しません。

コントローラーはイベントを取得し、$scope必要な変数を設定しますが、 を起動してもページは更新されません$scope.$eval()。次に、別のルートに移動する$scopeと、最終的にレンダリングされ、そのルートの上にモーダルがポップアップします。angularjs でバグを見つけたのか、それとも根本的な何かが欠けているのかわかりません。

4

2 に答える 2

36

おそらく$scope角度の外側を変更してい$digest()ます。に置き換えcode making changesてみてください$scope.$apply(function(){ code making changes })。これにより、ダーティチェックが実行され、すべてが更新されます。

于 2012-08-20T18:15:55.790 に答える
14

以下を使用することをお勧めします。

$scope.$evalAsync(function() { // scope changes here });

このようにして、ダイジェストが既に進行中のときに apply を呼び出そうとするような問題に遭遇することはありません。

于 2015-10-26T20:43:05.443 に答える