$ window.print()在它上面的行之前执行

时间:2014-08-07 23:29:44

标签: angularjs angularjs-directive angularjs-scope

我对下面代码的问题是$ window.print()在$ scope.loading_status = false之前执行,它不允许我在打印页面之前隐藏某些DOM元素。我该如何解决这个问题?

  $scope.print_error_response=function(){
     $scope.loading_status=false;
     $window.print();    
 }

2 个答案:

答案 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/