正如@zeroflagL 所建议的那样,替换的自定义指令ngShow
可能是要走的路。您可以使用&
将回调传递给指令,该指令可以在动画完成后调用。为了保持一致性,动画是通过添加和删除ng-hide
类来完成的,这与通常的 ngShow 指令使用的方法相同:
app.directive('myShow', function($animate) {
return {
scope: {
'myShow': '=',
'afterShow': '&',
'afterHide': '&'
},
link: function(scope, element) {
scope.$watch('myShow', function(show, oldShow) {
if (show) {
$animate.removeClass(element, 'ng-hide', scope.afterShow);
}
if (!show) {
$animate.addClass(element, 'ng-hide', scope.afterHide);
}
});
}
}
})
监听范围变量的示例用法show
是:
<div my-show="show" after-hide="afterHide()" after-show="afterShow()">...</div>
因为这是添加/删除 ng-hide 类,所以关于 ngShow 的文档中关于动画的要点仍然有效,您需要添加display: block !important
到 CSS 中。
你可以在这个 Plunker 看到一个这样的例子。