window.angular && (function(angular) { 'use strict'; angular.module('app.common.directives').directive('toggleFlag', [ '$document', function($document) { return { restrict: 'A', link: function(scope, element, attrs) { function elementClick(e) { e.stopPropagation(); } function documentClick(e) { scope[attrs.toggleFlag] = false; scope.$apply(); } element.on('click', elementClick); $document.on('click', documentClick); // remove event handlers when directive is destroyed scope.$on('$destroy', function() { element.off('click', elementClick); $document.off('click', documentClick); }); } }; } ]); })(window.angular);