Angular在打印功能之前是不是渲染?

时间:2015-07-27 10:31:51

标签: javascript angularjs

问题是打印函数被称为BEFORE角度变量被加载所以在视图中我得到类似这样的{{ticketPin}}等等......任何建议如何在调用print函数之前渲染角度参数?

我有accountContentController我有这个:

 $scope.printFunction = function ()
    {
        localStorage.setItem("payoutTime", $scope.testpayoutTime);
        localStorage.setItem("payoutAmount", $scope.testpayoutAmount);
        localStorage.setItem("pin", $scope.testticketPin);
        $window.open("/print");

    }

我有printController,我有这个:

$window.print();

2 个答案:

答案 0 :(得分:0)

使用ng-cloak或ng-bind摆脱{{ticketpin}}

<span ng-bind="ticketpin"></span>

答案 1 :(得分:0)

Id取决于您是从承诺还是以其他方式加载到范围。 但在这两种情况下,都可以设置对这些特定参数的监视。 Watch具有新旧变量的参数,您可以检查旧值(假设为null或未定义)是否由新值交换(假设您要打印此值)。 所以设置观察:

$scope.$watch(function(){ 
    return $scope.testpayoutAmount;
}, function(newVal,oldVal) { 
    if ( newVal != oldVal ) {
        $window.print(); 
    }
});

问题是,如果您有三个变量,并且想知道每个变量是否已更改。 您可以将计数器设置为三个:

$scope.$watch(function(){ 
    return $scope.testpayoutAmount + $scope.var2 + $scope.var3;
}, function(newVal,oldVal) { 
    if ( newVal != oldVal ) {
        $scope.count++;
    }
    if ( $scope.count == 3 ) 
        $window.print();
});

这里我假设,一个变量只能被改变一次,所以从undefined到某个值。如果有可能将其更改两次或更多,则此解决方案没有意义,因为在此处您必须在运行应用程序之前知道更改的总和。