You can create your own collapseall directive for accordion groups. In this directive, you can set the scope isOpen variable (created by angular -ui) to the value from your parent controller and the switch button for all.
EDIT: working demo here ( http://plnkr.co/edit/JOOZek2QBSmxIj2pXCkK?p=preview )
Js
.controller('MyCtrl', ['$scope', function($scope) { $scope.opened = false; }]) .directive('collapseall', [function() { return { restrict: 'A', scope: { collapseall: '=' }, link: function(scope, elem, attrs) { scope.$watch('collapseall', function(newval, oldval) { scope.isOpen = newval; }) } } } ])
HTML
<div> <accordion close-others="false"> <accordion-group heading="Item 001" collapseall="opened"> </accordion-group> <accordion-group heading="Item 002" collapseall="opened"> </accordion-group> <accordion-group heading="Item 003" collapseall="opened"> </accordion-group> </accordion> <button class="btn" ng-click="opened=!opened">Toggle groups</button> </div>
source share