poczekaj na pełne renderowanie aplikacji kątowej ze skryptu fantomowego
Piszę skrypt, który generuje obrazy png z każdej strony mojego frontendu. Używam kąta do interfejsu użytkownika i przechwytywam strony za pomocą fantomu.
Widok trwa chwilę, aż kątowe wykończenie go renderuje, więc muszę poczekaćtrochę przed przechwytywaniem:
var page = require('webpage').create();
page.open('http://localhost:9000/', function () {
window.setTimeout(function () {
page.render('snapshot.png');
phantom.exit();
}, 2000);
});
Zastanawiam się, czy istnieje lepszy sposób na osiągnięcie tego. Znalazłem, że kątowa może emitować zdarzenie, gdy strona jest w pełni renderowana:
$scope.$on('$viewContentLoaded', function () {
// do something
});
I znalazłem sposób na komunikację z fantomemonCallback
więc mógłbym napisać coś takiego:
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
Następnie w innym miejscu w fantomowym skrypcie:
page.onCallback = function() {
page.render('snapshot.png');
phantom.exit();
};
Ale zgubiłem się, jak wstrzyknąć kątowe$viewContentLoaded
uchwyt ze skryptu fantomowego.
Nie wiem czyevaluate
/evalueateAsyn
są drogi, by iść ...
page.evaluateAsync(function () {
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
});
Może mógłbym uzyskać dostęp do tego prawa$scope
w pewnym sensie. Jakieś pomysły?