我试图实施ng-show
和ng-hide
的animdated版本;我最初尝试使用jQueryUI.toggle('slide', …)
,但由于$watch
多次触发,我的元素切换并立即切换(有时不止一次)。但是我在AngularJS的github问题中看到,那就是$ watch的预期行为(脏检查)。
所以我想,好吧,这一点EFF-你是该死的,我会明确地显示或隐藏,而不是简单的切换:我打破了下来,检查$手表的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
那样发生变化(因为它不应该)。
这是怎么回事?
Hazzah!这似乎做到了 - 谢谢!顺便说一下,我的地图是基于Angular-UI的地图指令(我几乎没有改变任何东西 - 我想为'infoBox'找到/替换'infoWindow',所以代码主要是他们的)。 – jacob 2013-02-22 18:20:04