2015-05-28 3 views
0

Я искал в сети, и ничего не нашел. У меня есть скрипт angularJS, который появляется или исчезает с моей страницы html. Я использую скрипт phantomJS для доступа к странице html и делаю некоторые вещи. Но могу ли я использовать $scope или функции моего углового скрипта в моем фантомном скрипте? Я знаю, что могу использовать jQuery, но угловатый, я не знаю.Использование функции angularJS в phantomJS

+0

'$ области видимости 'является частью callbacks в angularjs (контроллерах и т. д.), у вас нет прямого доступа к нему, но, возможно, вы можете зарегистрировать директиву или что-то ли ke, чтобы получить доступ к 'page.evaluate()'. –

+0

Да, я быстро нашел. В 'page.evaluate()' мы можем получить доступ к jQuery, как этот '$ ('# something'). Action', но он отличается от углового. Это выглядит так: 'angular.element ($ (" # something ")). Scope()'. Я поставил ответ :) –

ответ

1

Я наконец нашел. Сценарий PhantomJS использует javascript, поэтому нам просто нужно вызвать элемент angularJS, как в javascript:

Это angular.element($("#someThing")).scope();, чтобы получить область действия.

Таким образом, мы можем иметь этот пример phantomJS:

page.open('http://www.google.com', function (status) { 
    if ('success' !== status) { 
     console.log("Error"); 
    } else { 
     page.evaluate(function() {   
      angular.element($("#someThing")).scope().aFunctionInTheScope(); 
      var scope = angular.element($("#myDiv")).scope(); 
      var width = scope.getWidth(); 
     }); 
     phantom.exit(); 
    } 
}); 

с angularJS кода, как это:

$scope.getWidth = function() { 
    return 1600; 
} 

и HTML страницы, как это:

<div id="myDiv"> 
    blabla 
</div> 
Смежные вопросы