Phantom 不会初始化/加载 Angularjs 控制器方法

Phantom wont initialize/loaded angularjs controller methods

本文关键字:Angularjs 控制器 方法 加载 初始化 Phantom      更新时间:2023-09-26

我需要帮助从由 AngularJS 控制器提供支持的 HTML 页面创建 PDF 文件。 PDF 将使用 Phantom 模块创建。 一旦我导航到特定的 URL,我就能够正确显示和绑定数据,但是当我调用 Phantom 来呈现页面时,它不会加载/启动/调用控制器方法 我尝试了不同的方法,例如从div 执行 ng-init 或调用函数从控制器完成加载甚至使用

$scope.$on('$viewContentLoaded', function(){
  //code here...
})

幻影代码:

function DoThePDF(){
    phantom.create(function(ph){
        ph.createPage(function(page) {
            page.set("paperSize", { format: "A4", orientation: 'portrait', margin: '1cm' });
            page.open(address, function(status) {
                if(status !== 'success'){
                    console.log('unable to open webpage');
                }
                else{
                    setTimeout(function() {
                        page.render("reports.pdf");
                        console.log("page rendered");
                        ph.exit();
                    }, 5000);
                }
            })
        })
    });
}

调用 page.open(address, function(status) {...} 时,我可以看到页面已打开,但角度事件/方法未被初始化/调用,因此当页面呈现时是一个空的 HTML 模板,没有数据被绑定。 我添加了延迟,但仍然没有帮助。

PhantomJS 1.9.x 不支持 websocket,因此我必须使用 PhantomJS 2。 由于正在开发中,还没有正式版本,但有一个测试版此处按指定构建。祝你好运