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?

questionAnswers(1)

yourAnswerToTheQuestion