J'ai un événement de clic sur une ligne du tableau et dans cette ligne il y a aussi un bouton de suppression avec un événement de clic. Lorsque je clique sur le bouton Supprimer, le clic Événement sur la ligne est également déclenché.
Voici mon code.
<tbody>
<tr ng-repeat="user in users" class="repeat-animation" ng-click="showUser(user, $index)">
<td>{{user.firstname}}</td>
<td>{{user.lastname}}</td>
<td>{{user.email}}</td>
<td><button class="btn red btn-sm" ng-click="deleteUser(user.id, $index)">Delete</button></td>
</tr>
</tbody>
Comment puis-je empêcher le showUser
déclenchement de l' événement lorsque je clique sur le bouton Supprimer dans la cellule du tableau?
javascript
angularjs
angularjs-ng-click
michael_knight
la source
la source
ng-click
fonction de gestionnaire:ng-click="deleteUser(user.id, $event)"
.$event.preventDefault()
aussi, sinon appeler$event.stopPropagation()
me redirigeait vers la racine de mon application en cliquant sur le bouton.Un ajout à la réponse de Stewie. Dans le cas où votre rappel décide si la propagation doit être arrêtée ou non, j'ai trouvé utile de passer l'
$event
objet au rappel:Et puis dans le rappel lui-même, vous pouvez décider si la propagation de l'événement doit être arrêtée:
la source
J'ai écrit une directive qui vous permet de limiter les zones où un clic a un effet. Il pourrait être utilisé pour certains scénarios comme celui-ci, donc au lieu d'avoir à traiter le clic au cas par cas, vous pouvez simplement dire "les clics ne sortiront pas de cet élément".
Vous l'utiliseriez comme ceci:
Gardez à l'esprit que cela empêcherait tous les clics sur la dernière cellule, pas seulement sur le bouton. Si ce n'est pas ce que vous voulez, vous pouvez envelopper le bouton comme ceci:
Voici le code de la directive:
la source
ngClick
, car je ne veux en fait jamais propager un événement déjà géré.ignoreNgClick=true
à l'événement et le gérer ... en quelque sorte. Idéalement, dans langClick
directive d' origine , mais la modifier semble sale.Dans le cas où vous utilisez une directive comme moi, voici comment cela fonctionne lorsque vous avez besoin de la liaison à deux données, par exemple après la mise à jour d'un attribut dans n'importe quel modèle ou collection:
Maintenant, vous pouvez facilement l'utiliser dans n'importe quel bouton, lien, div, etc. comme ceci:
la source
la source