我正在尝试实现 and 的动画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 的循环期间我的条件值正在以某种方式发生变化(它迭代了 6 次而不是仅仅一次,但这不应该在这里也不应该在那里)。newValue
但是,实际范围参数的值不会像's一样在中途改变(因为它不应该改变) 。
到底他妈发生了什么?