我目前在尝试打印报告时遇到问题。我们正在使用Angularjs解决方案。我们为用户显示报告,当他们点击打印时,我们有模板切换。然后我们调用window.print()(通常会停止javascript代码执行)。然后在打印后我们将模板交换回显示器。
这目前适用于Mac上的chrome和safari。但是,当我们使用Ipad / Iphone时,模板交换,交换,然后出现打印并且打印预览不正确。
寻找我找到的答案: 人们谈论使用var mql = window.matchMedia(' print')然后使用add.listener(函数)并在函数中进行交换。下面的代码我能够让Ipad / Iphone交换到正确的模板并打印,但它不会换回。
VcrReportController.prototype.printReport = function () {
var vm = this;
var mql = window.matchMedia('print');
var printHandler = function(mql){
if (mql.matches){
console.log('print');
vm.template = 'displayTemplate'
}
else{
console.log('not print');
}
}
function changeTemplate() {
var deferred = vm.$q.defer();
vm.template = 'printTemplate';
vm.$timeout(function () {
deferred.resolve(true);
},250);
return deferred.promise;
}
changeTemplate()
.then(function (response) {
mql.addListener(printHandler);
vm.$window.print();
});
不是100%肯定听众的东西。人们可能用来处理这种情况的任何帮助或其他解决方案都会很棒。
谢谢,