Write a simple directive that follows its attribute:
app.directive('animateMe', function() { return function(scope, element, attrs) { scope.$watch(attrs.animateMe, function() { element.show(300).delay(900).hide(300); }) } })
Place this directive on the HTML element that you want to animate. Have ng-click to switch the model / area property.
<a ng-click="animateToggle = !animateToggle">animate</a> <div animate-me="animateToggle">...</div>
More code, yes. But now you have something reusable (and you don't need selectors).
Fiddle
In the script, I added ng-hide to the div so that it does not appear initially.
Update :
Angular 1.1.4 now has ngAnimate . Although not as flexible as writing your own animation directive, it will handle many scenarios. The ng-show (and ng-hide) directive supports show and hide animation methods.
source share