дождитесь полной визуализации углового приложения из фантомного скрипта

Я пишу скрипт, который генерирует 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 ручка из фантомного скрипта.

Я нене знаю, если /evaluateevalueateAsyn путь ...

page.evaluateAsync(function () {
  $scope.$on('$viewContentLoaded', function () {
    window.callPhantom({ hello: 'world' });
  });
});

Может быть, я мог бы получить право$scope каким-то образом. Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос