Javascript 如何在页面加载后自动触发角度指令

Javascript 如何在页面加载后自动触发角度指令,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个print指令,当print=“id”属性位于中时调用该指令。按钮处于用户不可见的模式。一旦模态加载,我需要指令启动。 它会是在模态底部的简单脚本中吗 <a href="#" print="jobSetupPrintPdf"><button>Print</button></a> <script type="text/javascript"> $(window).load(function () { ???

我有一个print指令,当
print=“id”
属性位于
中时调用该指令。按钮处于用户不可见的模式。一旦模态加载,我需要指令启动。 它会是在模态底部的简单脚本中吗

<a href="#" print="jobSetupPrintPdf"><button>Print</button></a>

<script type="text/javascript">
    $(window).load(function () {
       ????????
    });
</script>

我正在阅读我需要添加$timeout或延迟吗?我不知道如何在这里应用它

似乎您真正需要做的就是将打印包装成一个函数。如果仍然需要使用按钮,请立即调用相应的函数,并将其用作单击处理程序

app.directive('print', ['$compile', function ($compile) {
    return {
        restrict: 'AEC',
        link: function (scope, el, attrs) {

            function simplePrint(){
                window.print();
            }

            function fancyPrint(){                    
                /* code for other window */
            }
            if (attrs.nopopup) {
                simplePrint();
                el.bind('click',simplePrint);
            } else {
                fancyPrint();
                el.bind('click', fancyPrint);
            }
        }
    };
}]); 

请记住,如果您在页面中创建html,您需要在打印之前给它一些时间来构建所有内容

如何延迟加载函数?取决于页面,但有一点会有所帮助,那就是使用路由的
解析
,以确保在加载模板之前所有数据都可用。还要查看
$timeout
<代码>$broadcast也可能有帮助,从控制器代码的其他部分将事件发送到指令
<a href="#" print="jobSetupPrintPdf" id="testing">Print</a>
 <script type="text/javascript">
  $('#testing').click()
 </script>
Error: [$rootScope:inprog] $digest already in progress
app.directive('print', ['$compile', function ($compile) {
    return {
        restrict: 'AEC',
        link: function (scope, el, attrs) {

            function simplePrint(){
                window.print();
            }

            function fancyPrint(){                    
                /* code for other window */
            }
            if (attrs.nopopup) {
                simplePrint();
                el.bind('click',simplePrint);
            } else {
                fancyPrint();
                el.bind('click', fancyPrint);
            }
        }
    };
}]);