2016-07-19 1 views
0

この質問をする前にインターネットで調べましたが、正しい答えが見つかりませんでした。AngularJSは指示からイベントを放出し、DOMを更新します

したがって、私はディレクティブからコントローラにイベントを放出したいと思います。このイベントが発生すると、DOMを更新したいと思います。私はダミーを作ったplunkerそれをチェックしてください。

イベントを発行すると、コントローラは通知しますが、DOMを更新しませんでした。イベントを起こすときはコンソールを見てください。

誰でも私に説明できますか? はあなたが$スコープをラップする必要が

答えて

2

ありがとうござい$のような本当のあなたの$ scope.show =の周りに適用されます。あなたがイベントを放出し、あなたのコントローラがそれをキャッチし、$の範囲を設定する場合、基本的に

$scope.$apply(function() { 
    $scope.show = true; 
}); 

。 trueにすると、ロジックはAngularのダイジェストサイクルの外で発生します。ダイジェストサイクルでは更新が表示されないため、DOMは更新されません。 。

$スコープ$明示的に適用するには、角度伝えます:「ねえ、私はこの変数更新した、それをチェックアウトし、私のためにDOMを更新」

詳しい情報や、ここではかなり良い説明:私は「http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

+1

'$ scope。$ apply'の' $ emit'呼び出しを、Angularのダイジェストサイクルの外で発生する部分として包み込む方が、 – Phil

関連する問題