我对下面代码的问题是$ window.print()在$ scope.loading_status = false之前执行,它不允许我在打印页面之前隐藏某些DOM元素。我该如何解决这个问题?
$scope.print_error_response=function(){
$scope.loading_status=false;
$window.print();
}
答案 0 :(得分:2)
这有效
$timeout(function() {
$window.print();
})
答案 1 :(得分:2)
$scope.loading_status
的分配在$window.print()
调用之前发生,因为这是Javascript的本质。您可能正在看到的内容(因为我无法看到您如何隐藏DOM元素)是Javascript的异步特性,因为Angular直到"摘要周期之后才更新DOM#34;评估所有范围。
将$window.print()
调用包装在$timeout
中的原因是因为在角度完成摘要周期和更新后调度发生的<{1}}方法调用DOM(从而隐藏&#34;某些DOM元素&#34;)
这里是Javascript事件循环的一个不错的解释:http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/