Angular.js: Cliquer sur l'élément enfant déclenche son propre ng-clic et celui du parent aussi

Créé le 3 déc. 2013  ·  9Commentaires  ·  Source: angular/angular.js

Si j'ai un <div> avec un ng-click puis un <button> intérieur avec un ng-click séparé, cliquer sur le bouton déclenchera les deux ng-click gestionnaires.

J'ai trouvé l'ancien PR d'Igor pour cela (#31 !) mais il semble que les stopPropagation() qu'il a ajoutés ont été perdus quelque part entre les deux.

J'ai essayé de couper en deux, mais j'ai trouvé que cela ne fonctionnait pas dans 1.2.3, master, 1.1.5, 1.1.3, 1.0.6 ou 1.0.3. J'ai essayé de couper en deux entre le maître et le commit d'Igor dans le PR ci-dessus, mais les modifications sont devenues si anciennes (0.10.x) que mon application de test ne fonctionnera pas du tout.

Cas de test simple pour reproduire cela sur Plunkr .

Commentaire le plus utile

Il vous suffit d'ajouter le code $event.stopPropagation() sur Child div on click event

Tous les 9 commentaires

Il semble que l'appel stopPropagation() été supprimé par 1752c8c44a7058e974ef208e583683eac8817789.

@tbosch, veuillez décider si cela fonctionne comme prévu ou si nous pouvons faire quelque chose pour faire face à cette situation.

nous ne pouvons pas arrêter la propagation par défaut car il n'y aurait aucun moyen de l'arrêter.

Il existe des cas d'utilisation valables pour ne pas arrêter la propagation.
L'arrêt de la propagation rendrait ces cas d'utilisation impossibles, car nous ne pouvons pas arrêter la propagation.

Exemple d'utilisation :
Liste des éléments avec un bouton "publier". Lorsque vous cliquez sur l'un de ces éléments, l'élément doit être mis en surbrillance en tant qu'élément sélectionné. Cela devrait également être le cas si le bouton « publier » d'un élément non sélectionné est enfoncé.

En ce moment c'est possible, voir ce punk : http://plnkr.co/edit/jVIovi0L9Hgo1Bl9t72O?p=preview

Fermez ceci car cela fonctionne comme prévu.

Il vous suffit d'ajouter le code $event.stopPropagation() sur Child div on click event

@gomteshhatgine sur mobile ou ionique cela n'a pas fonctionné. cela fait que l'enfant ng-click n'est pas déclenché aussi.

@gomteshhatgine dans mon cas, il se déclenche toujours en tant que parent. Avez-vous une autre approche?

@maceonrails Je ne connais pas le mobile, je n'ai pas essayé

@xenogew ça devrait marcher
Pouvez-vous s'il vous plaît partager un extrait de code ?

@gomteshhatgine merci. ça a marché.

Ne fonctionne plus

Cette page vous a été utile?
0 / 5 - 0 notes