<button print-btn ng-click="test()"> test() method is fired after print window is closed Plunker link :https://plnkr.co/edit/l9dnC2KnChznUf8mk1As?p=preview Fix: invoke $window.print inside $timeout() ``` AngularPrint.directive('printBtn',['$window','$timeout', function($window,$timeout){ return { restrict: 'A', link: function(scope, element){ element.on('click', function(event){ $timeout(function () { $window.print(); }, 0); }); } }; }]); ```