我需要使用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>
答案 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。