お世話になっております。表題の件で質問です。
以下のコードについてですが、
$timeoutのコールバック関数内で、scope.$applyしてscope.closeしていると思います。
下記の記事を読むと、$timeoutであれば、$applyは不要と思うのですが、実際$applyを外すと、closeの処理が想定通り動かなくなります。
理由についてわかる方いらっしゃいましたら教えていただけると幸いです。どうぞよろしくお願いします。
http://angularjsninja.com/blog/2013/12/27/angularjs-apply/
javascript
1 link: function (scope) { 2 scope.close = function () { 3 scope.enable = false; 4 }; 5 var promise; 6 // (2) enable属性の値を監視 7 scope.$watch('enable', function (newVal) { 8 if (newVal) { 9 // (3) 指定した時間が経過したら閉じるように設定 10 promise = $timeout(function () { 11 scope.$apply(function () { 12 scope.close(); 13 }); 14 }, scope.timeout, false); 15
追記
$timeoutの第3引数falseの指定をなくすと想定どおりの動作になりました。
となると、falseにすると、$applyの動作が必要になり
trueになると$applyが必要になるですかね。
言い換えると、falseは手動で$applyが必要であれば行う必要ありということですかね。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。