Chapter 3: Creating leave and concurrent animations with ng-view
by billy roberts
HTML
<script src="https://code.angularjs.org/1.3.2/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.2/angular-animate.min.js"></script>
<script src="https://code.angularjs.org/1.3.2/angular-route.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<div ng-app="myApp">
<ng-view class="animate-container"></ng-view>
<div class="link-container">
<a href="#/foo">Foo</a>
<a href="#/bar">Bar</a>
</div>
<script type="text/ng-template" id="foo.html">
<div>
<span>Foo</span>
</div>
</script>
<script type="text/ng-template" id="bar.html">
<div>
<span>Bar</span>
</div>
</script>
</div>
CSS
.link-container {
position:absolute;
top:320px;
}
.animate-container {
position:absolute;
}
.animate-container div {
width:300px;
text-align:center;
line-height:300px;
border:1px solid black;
}
JavaScript
// animate ng-View with jQuery
angular.module('myApp', ['ngAnimate', 'ngRoute'])
.config(function ($routeProvider) {
$routeProvider
.when('/bar', {
templateUrl: 'bar.html'
})
.otherwise({
templateUrl: 'foo.html'
});
})
.animation('.animate-container', function() {
return {
enter: function(element, done) {
$(element)
.css({
'top': '-300px'
});
$(element)
.delay(500)
.animate({
'top': '0px'
}, 500, done);
},
leave: function(element, done) {
$(element)
.css({
'top': '0px'
});
$(element)
.animate({
'top': '-300px'
}, 500, done);
}
};
});