zupit.directive('zClick', [ '$q', '$parse', function ($q, $parse) { return { restrict: 'A', compile: function ($element, attr) { var fn = $parse(attr.zClick); return function clickHandler(scope, element, attrs) { element.on('click', function (event) { attrs.$set('disabled', true); scope.$apply(function () { $q.when(fn(scope, { $event: event })).finally(function () { attrs.$set('disabled', false); }); }); }); }; } } } ]);