У меня есть одностраничное веб-приложение, использующее angularJS. Мне нужно распечатать div на определенной странице. Я попробовал следующее:
Страница содержит несколько div (print.html)
<div>
<div>
Do not print
</div>
<div id="printable">
Print this div
</div>
<button ng-click="printDiv('printableArea');">Print Div</button>
</div>
Контроллер имеет следующий script:
$scope.printDiv = function(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
Этот код печатает нужный div, но есть проблема.
оператор document.body.innerHTML = originalContents;
заменяет тело всего приложения, так как он является SPA. Поэтому, когда я обновляю страницу или снова нажимаю кнопку "Печать", весь контент страницы стирается.