无需在AngularJS中打开新窗口即​​可打印div

时间:2016-08-30 13:06:34

标签: javascript angularjs

我需要使用div打印button的内容。我已经搜索了它并找到了出路,在AngularJS中做到了。

我的问题是每当调用print时,它也会打开一个新窗口;它不应该打开它。

有没有办法阻止打开新窗口?

以下代码:

JS:

$scope.printControl = function(id) {
    var printContents = document.getElementById(id).innerHTML;
    var popupWin = $window.open('', '_blank', 'width=800,height=800');
    popupWin.document.open();
    popupWin.document.write('<html><body onload="window.print()">' + printContents + '</body></html>');
    popupWin.document.close();
};    

HTML:

<div id="printDiv">
    This div needs to be printed
  </div>
  <button ng-click="printControl('printDiv')">
  Print
</button>

Demo

1 个答案:

答案 0 :(得分:1)

我会这样做:

$scope.printControl = function(id) {
   $scope.visible = true;
   $timeout(function(){
        $window.print();         
        $timeout(function(){
           $scope.visible = false;
        }, 0);
   }, 0);
};

并以这种方式修改您的按钮:

<button ng-click="printControl('printDiv')" ng-hide="visible">

我们的想法是,当您点击按钮进行打印时,隐藏您不想在dom中打印的元素,并在之后立即重新显示。

链接到更新的fiddle