Angularjs $window.print()在其上方的行之前执行
下面代码的问题是$window.print()在$scope.loading_status=false之前执行,这不允许我在打印页面之前隐藏某些DOM元素。我怎样才能解决这个问题Angularjs $window.print()在其上方的行之前执行,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,下面代码的问题是$window.print()在$scope.loading_status=false之前执行,这不允许我在打印页面之前隐藏某些DOM元素。我怎样才能解决这个问题 $scope.print_error_response=function(){ $scope.loading_status=false; $window.print(); } 这很有效 $timeout(function() { $window.print(
$scope.print_error_response=function(){
$scope.loading_status=false;
$window.print();
}
这很有效
$timeout(function() {
$window.print();
})
这很有效
$timeout(function() {
$window.print();
})
$scope.loading_status
的分配发生在调用$window.print()
之前,因为这是Javascript的本质。您可能看到的(因为我看不出您是如何隐藏DOM元素的)是Javascript的异步特性,因为Angular在评估所有作用域的“摘要周期”之后才更新DOM
在$timeout
中包装$window.print()
调用的原因是,它将print()
方法调用安排在angular完成摘要循环并更新DOM之后进行(从而隐藏“某些DOM元素”)
下面是对Javascript事件循环的合理解释:分配
$scope.load\u status
发生在调用$window.print()
之前,因为这是Javascript的本质。您可能看到的(因为我看不出您是如何隐藏DOM元素的)是Javascript的异步特性,因为Angular在评估所有作用域的“摘要周期”之后才更新DOM
在$timeout
中包装$window.print()
调用的原因是,它将print()
方法调用安排在angular完成摘要循环并更新DOM之后进行(从而隐藏“某些DOM元素”)
下面是Javascript事件循环的合理解释: