Как имитировать нажатие на элемент при нажатии на другой элемент в angularjs - PullRequest
0 голосов
/ 26 февраля 2020

У меня странный запрос. Когда я нажимаю одну кнопку, я хочу, чтобы она нажимала другую кнопку программно. Есть ли способ сделать это в angularjs?

Вот что я пробовал:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.clickButton = function(){
    angular.element(document.getElementById('buttonToBeClicked')).triggerHandler('click')
  }
  
  $scope.alert = function(){
    alert("I was clicked programmatically")
  }
});
AngularJS Example
<div ng-app="myApp" ng-controller="myCtrl">

<button id="buttonToClick" ng-click="clickButton">button to click</button>
  
<button ng-click=alert() id="buttonToBeClicked">button to be clicked</button>

</div>

Для полного контекста я пытаюсь создать кнопку, которая нажимает все кнопки на странице.

1 Ответ

1 голос
/ 26 февраля 2020

То, что у вас есть, будет работать с одним небольшим исправлением:

<button id="buttonToClick" ng-click="clickButton">button to click</button>

Должно быть:

<button id="buttonToClick" ng-click="clickButton()">button to click</button>

В вашей директиве ng-click вы пропустили скобки в методе. Вот рабочий образец:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.clickButton = function() {
    angular.element(document.getElementById('buttonToBeClicked')).triggerHandler('click')
  }

  $scope.alert = function() {
    alert("I was clicked programmatically")
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
AngularJS Example
<div ng-app="myApp" ng-controller="myCtrl">
  <button id="buttonToClick" ng-click="clickButton()">button to click</button>
  <button id="buttonToBeClicked" ng-click="alert()">button to be clicked</button>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...