Chcę wyzwolić ng-click
element w czasie wykonywania, taki jak:
_ele.click();
LUB
_ele.trigger('click', function());
Jak można to zrobić?
javascript
jquery
angularjs
angularjs-ng-click
mulla.azzi
źródło
źródło
Odpowiedzi:
Składnia jest następująca:
Więcej informacji o Angular Extend tutaj .
Jeśli używasz starszych wersji angular , powinieneś użyć trigger zamiast triggerHandler .
Jeśli chcesz zastosować propagację zatrzymania, możesz użyć tej metody w następujący sposób:
źródło
triggerHandler
zamiasttrigger
EDYCJA: Wygląda na to, że musisz wyrwać się z obecnego cyklu $ apply (). Jednym ze sposobów jest użycie $ timeout ():
Zobacz skrzypce: http://jsfiddle.net/t34z7/
źródło
$timeout
niżsetTimeout
, ponieważ w razie potrzeby$timeout
uruchomisz$apply
cykl za Ciebie. Dzięki temu Twój kod jest bardziej testowalny, ponieważ ngMock daje Ci pełną kontrolę nad tym, kiedy$timeout
s są wykonywane. docs.angularjs.org/api/ng/service/$timeout$timeout(fn, 0, false);
tak, aby nie wywoływało $ apply, prawda?$timeout
jest usługą i jako taka musi zostać wstrzyknięta w zależności, zanim będzie można z niej korzystać docs.angularjs.org/api/ng/service/$timeoutTo rozwiązanie działa dla mnie:
zamiast :
źródło
$('#element').click()
Na wypadek, gdyby wszyscy to widzieli, dodałem dodatkową powielającą odpowiedź z ważną linią, która nie przerwie propagacji zdarzenia
źródło
Użycie zwykłego starego JavaScript działało dla mnie:
document.querySelector('#elementName').click();
źródło
Najlepszym rozwiązaniem jest użycie:
Ponieważ zdarzenia kliknięcia angularjs triggerHandler (
angular.element(domElement).triggerHandler('click')
) nie pojawiają się w hierarchii DOM, ale to powyżej - tak jak zwykłe kliknięcie myszą.https://docs.angularjs.org/api/ng/function/angular.element
http://api.jquery.com/triggerhandler/
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
źródło
Możesz polubić
źródło
Prosta próbka:
HTML
JavaScript
Poszukuje przycisku
id
i wykonuje kliknięcie. Voila.Źródło: https://techiedan.com/angularjs-how-to-trigger-click/
źródło
Ten kod nie zadziała (po kliknięciu wyrzuci błąd):
Musisz użyć querySelector w następujący sposób:
źródło
Uwzględnij następujący wiersz w swojej metodzie, w której chcesz wywołać zdarzenie kliknięcia
źródło