web-dev-qa-db-fra.com

Comment ajouter de nombreuses fonctions dans ONE ng-click?

Je cherche comment exécuter ceci mais je ne trouve rien qui y soit lié pour le moment :( Je pourrais imbriquer les deux fonctions oui mais je me demande si c'est possible? J'aimerais faire ceci à la lettre:

<td><button class="btn" ng-click="edit($index) open()">Open me!</button></td>

Mon code JS en ce moment:

$scope.open = function () {
  $scope.shouldBeOpen = true;
};      

$scope.edit = function(index){

  var content_1, content_2;
      content_1 = $scope.people[index].name;
      content_2 = $scope.people[index].age;

  console.log(content_1);
};

Je voudrais appeler deux fonctions en un seul clic, comment puis-je faire cela dans angularJS? Je pensais que ce serait simple comme en CSS lorsque vous ajoutez plusieurs classes ... mais ce n'est pas :(

287
YoniGeek

Vous avez 2 options:

  1. Créez une troisième méthode qui encapsule les deux méthodes. L'avantage ici est que vous mettez moins de logique dans votre modèle.

  2. Sinon, si vous voulez ajouter 2 appels en ng-click, vous pouvez ajouter ';' après edit($index) comme ceci

    ng-click="edit($index); open()"

Voir ici: http://jsfiddle.net/laguiz/ehTy6/

626
Maxence

Vous pouvez appeler plusieurs fonctions avec ';'

ng-click="edit($index); open()"
15
amit

Beaucoup de gens utilisent l'option (clic), je vais donc le partager aussi.

<button (click)="function1()" (click)="function2()">Button</button>
5
Nebojsa Sapic

Essaye ça:

  • Faire une collection de fonctions
  • Créez une fonction qui parcourt et exécute toutes les fonctions de la collection.
  • Ajouter la fonction au HTML
array = [
    function() {},
    function() {},
    function() {}
]

function loop() {
    array.forEach(item) {
        item()
    }
}

ng - click = "loop()"
2
tzvis