#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();
});