дождитесь полной визуализации углового приложения из фантомного скрипта
Я пишу скрипт, который генерирует PNG-изображения с каждой страницы моего интерфейса. Я'м используя угловой для пользовательского интерфейса и захвата страниц с фантомом.
Представление занимает некоторое время, пока угловая не закончит рендеринг, поэтому мне придется подождатьнемного до захвата:
var page = require('webpage').create();
page.open('http://localhost:9000/', function () {
window.setTimeout(function () {
page.render('snapshot.png');
phantom.exit();
}, 2000);
});
Интересно, есть ли лучший способ добиться этого? Я обнаружил, что angular может генерировать событие, когда страница полностью отображается:
$scope.$on('$viewContentLoaded', function () {
// do something
});
И нашел способ пообщаться с фантомомonCallback
чтобы я мог написать что-то вроде:
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
Тогда в другом месте в фантомном скрипте:
page.onCallback = function() {
page.render('snapshot.png');
phantom.exit();
};
Но я'м потерял в том, как ввести угловой$viewContentLoaded
ручка из фантомного скрипта.
Я нене знаю, если /evaluate
evalueateAsyn
путь ...
page.evaluateAsync(function () {
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
});
Может быть, я мог бы получить право$scope
каким-то образом. Есть идеи?