J'ai une liste d'articles à mon avis avec ci- ng-click
joint:
<ul id="team-filters">
<li ng-click="foo($event, team)" ng-repeat="team in teams">
<img src="{{team.logoSmall}}" alt="{{team.name}}" title="{{team.name}}">
</li>
</ul>
Je gère les événements de clic dans la foo
fonction dans ma directive, en passant $event
comme référence à l'objet sur lequel on a cliqué, mais j'obtiens une référence à la img
balise, plutôt qu'à la li
balise. Je dois ensuite faire des trucs comme ça pour obtenir li
:
$scope.foo = function($event, team) {
var el = (function(){
if ($event.target.nodeName === 'IMG') {
return angular.element($event.target).parent(); // get li
} else {
return angular.element($event.target); // is li
}
})();
Existe-t-il un moyen simple d'obtenir la référence à l'élément qui y ng-click
est lié, sans effectuer d'opérations DOM dans ma directive?
var elem = $event.currentTarget || $event.srcElement
. Son toujours été plus convivial, mais je ne sais plus si c'est nécessaire.Pas une réponse directe à cette question mais plutôt à la "question" d'
$event.currentTarget
être apparemment mise à zéro.Cela est dû au fait que console.log affiche les objets mutables profonds au dernier état d'exécution, et non à l'état lorsque console.log a été appelé.
Vous pouvez vérifier cela pour plus d'informations: Les appels consécutifs à console.log produisent des résultats incohérents
la source