とのアニメーションバージョンを実装しようとしていng-show
ますng-hide
。私はもともとを使おうとしましjQueryUI.toggle('slide', …)
たが、$watch
何度も発砲したため、要素がトグルインしてすぐにトグルアウトしていました(場合によっては複数回)。しかし、AngularJSのgithubの問題で、それが$ watchの意図した動作(ダーティチェック)であることがわかりました。
だから私は、この小さな効果を大丈夫だと思いました-あなたは気にしないでください、私は単純なトグルの代わりに明示的に表示または非表示にします:私はそれを分解して$watchの値を次のnewValue
ようにチェックします:
scope.$watch(condition, function myShowHideAction(newValue,oldValue) {
if ( newValue !== oldValue ) {
if (newValue) {
elm.show("slide", { direction: direction }, "slow");
} else {
elm.hide("slide", { direction: direction }, "slow");
}
}
}
それを起動し、私は何を見ますか?トグル!
いくつかのコンソールログを入力した後、$ watchのループ中に条件の値が変更されていることがわかりました(これは1回ではなく6回繰り返されますが、ここにもそこにもありません)。ただし、実際のスコープパラメータの値は、のように途中で変更されることはありません(変更されるべきではありません)newValue
。
一体何が起こっているのですか?