You could check in a dev tools how ng-animation toggle classes in different states of animation and how ng-show change the css display property.
In your case ng-class is enough, there is ng-init for your vis variable (but if it's already in a controller you can omit ng-init)
<div ng-app="">
<a href="#" ng-init="vis=false" ng-click="vis = !vis">Toggle</a><br/>
<ul class="ng-class: {true: 'menu-show-setup', false: 'menu-hide-setup'}[vis]">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
<style>
.menu-show-setup, .menu-hide-setup {
transition:all 0.5s ease-out;
overflow:hidden
}
.menu-show-setup {
max-height:200px;
}
.menu-hide-setup {
max-height:0px;
}
</style>