вызов функции ng-click из внешнего скрипта

#javascript #angularjs

#javascript #angularjs

Вопрос:

я работаю над расширением Chrome, которое может автоматизировать заполнение формы. Таким образом, к форме, которую я заполняю, прикреплена кнопка next с атрибутом ng-click «forward()», например-

 <button type="button" ng-class="{disabled: !showNext()}" ng-click="forward()" class="btn btn-success btn-lg default pull-right" style="font-size: 18px;">Next <i class="fa fa-chevron-right white-color"></i></button>
 

Я попытался вызвать angular.element($('button.pull-right')).scope().forward() или $('button.pull-right').scope().forward() , и функция выполняется, но представление не обновляется. Я знаю, что могу это сделать $('button.pull-right'.click() , и это работает, но на самом деле мне нужно обойти событие click, для этого мне нужно привязать щелчок к функции моего внешнего скрипта (который я введу на страницу через свое расширение), а затем из моего скрипта вызвать forward() функцию.

У меня было много времени на поиск в Google, но у меня ничего не получилось. Пожалуйста, помогите!

Ответ №1:

Когда вы обращаетесь к Angular из-за пределов его контекста, он не заметит, что вы это сделали, если вы не сообщите ему об этом. Вы делаете это с помощью $apply .

Попробуйте это:

 angular.element($('button.pull-right')).scope().$apply(function() {
    angular.element($('button.pull-right')).scope().forward();
});