Je suis confronté au problème parce que j'ai une case à cocher dans un div et je veux appeler une fonction dans les deux cas: si nous changeons la valeur de la case à cocher ou cliquez sur la div.Émission répétée d'événement avec ng-clic dans div imbriqué
Maintenant, le problème est que, lorsque je clique sur la case à cocher, l'événement est renvoyé deux fois et je n'obtiens pas le résultat attendu.
<div ng-click="checkEntry(config.id)"><input type="checkbox" ng-model="modelCheckbox" ng-change="checkEntry(config.id)" ng-checked="someArray.indexOf(config.id) !== -1"></div>
$scope.checkEntry = function(id){
var idx = $scope.someArray.indexOf(id);
if(idx === -1){
$scope.someArray.push(id);
}else{
$scope.someArray.splice(idx, 1);
}
}
Maintenant, si je clique sur div, cela fonctionne très bien et la case est cochée. Mais si je clique sur le checkBox, la fonction est appelée deux fois, et cela ne fonctionne pas comme prévu.
S'il vous plaît me aider avec une solution
essayer d'ajouter 'event.stopPropagation $()' 'avec ng-click' de div –
lorsque votre case à cocher est cliqué. son événement cliqué est renvoyé. et son a été propagé à l'élément parent. élément qui se trouve dans la hiérarchie parent et auquel un événement click est associé, ils capturent également ces événements. C'est ce qu'on appelle le bouillonnement d'événements. par conséquent, vous devez appeler $ event.stopPropagation() sur votre case à cocher ng-click. –