Отследить нажатие вне контейнера можно с помощью следующей дерективы:
.directive('clickOut', ['$window', '$parse', function ($window, $parse) { return { restrict: 'A', link: function (scope, element, attrs) { var clickOutHandler = $parse(attrs.clickOut); angular.element($window).on('click', function (event) { if (element[0].contains(event.target)) return; clickOutHandler(scope, {$event: event}); scope.$apply(); }); } }; }])
<button type="button" ng-click="ctrl.clickOn()" click-out="ctrl.clickOut()">Button</button>