我正在写一个脚本,它从我的前端的每一页生成png图像.我正在使用角度来设置UI并使用幻像捕获页面.
视图需要一段时间,直到角度完成呈现它,所以我必须等待一段时间才能捕获:
var page = require('webpage').create();
page.open('http://localhost:9000/', function () {
window.setTimeout(function () {
page.render('snapshot.png');
phantom.exit();
}, 2000);
});
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来实现这一目标.我发现当完全呈现页面时,angular可以发出一个事件:
$scope.$on('$viewContentLoaded', function () {
// do something
});
Run Code Online (Sandbox Code Playgroud)
并找到了一种与幻像进行交流的方法,onCallback因此我可以写出如下内容:
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
Run Code Online (Sandbox Code Playgroud)
然后在幻影脚本的其他地方:
page.onCallback = function() {
page.render('snapshot.png');
phantom.exit();
};
Run Code Online (Sandbox Code Playgroud)
但我迷失在如何$viewContentLoaded从幻像脚本中注入角度手柄.
我不知道evaluate/ evalueateAsyn是要走的路...
page.evaluateAsync(function () {
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
});
Run Code Online (Sandbox Code Playgroud)
也许我可以通过$scope某种方式访问权限.有任何想法吗?