我使用UI Bootstrap来折叠/展开基于用户单击按钮的div部分,类似于官方网站中显示的示例- UI Bootstrap- collapse
我包含了最新版本的ui-bootstrap(0.14.2),但它没有显示预期的行为。特别是collapseDone()和expandDone()回调在$animateCSS完成动画后永远不会被调用。(动画工作正常,大概是因为css过渡属性的类' collapse '在twitter bootstrap
)但是当我检查UI引导网站时,我发现它像预期的那样正常工作。(即在动画期间添加"collapse"类,然后在动画结束后删除,然后添加"collapse"类)。所以我检查了崩溃源代码链接,发现finally用于$animateCSS承诺解析,而不是done在我包含的ui.bootstrap.js代码中。
那么有人能解释一下$animateCSS函数的finally和done方法之间的区别吗?文档[Angular Docs-$animateCSS][3]说
在运行器上还有一个额外的方法叫做.done(callbackFn)。done方法的工作原理与.finally(callbackFn)相同,但是,它不会触发摘要的发生。因此,出于性能考虑,最好使用runner.done(callback)而不是runner.then()、runner.catch()或runner.finally(),除非您确实需要在之后启动一个摘要。
所以看起来两者的行为应该相似。有人可以阐明这一点,因为似乎有很少的资源来了解$animateCSS。(谷歌搜索$animateCss返回的结果animate.css似乎是早期angular js版本(v1.2)的一部分-所以这没有帮助)
我忘记注入"ngAnimate"到我的模块。这样,$animateCss的动画就不成功了,所以done()永远不会被调用。但是最后即使动画不成功也会调用。