Eu tenho uma lista de itens em minha opinião ng-click
anexados a eles:
<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>
Estou manipulando os eventos de clique na foo
função na minha diretiva, passando $event
como uma referência ao objeto que foi clicado, mas estou obtendo uma referência à img
tag, em vez da li
tag. Então eu tenho que fazer coisas assim para obter o 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 uma maneira simples de obter a referência ao elemento que ng-click
está vinculado, sem fazer operações DOM na minha diretiva?
var elem = $event.currentTarget || $event.srcElement
. Sempre foi mais amigável à navegação cruzada, mas não sei mais se é necessário.Não é uma resposta direta a essa pergunta, mas ao "problema" de
$event.currentTarget
aparentemente ser definido como nulo.Isso ocorre porque o console.log mostra objetos mutáveis profundos no último estado de execução, e não no estado em que o console.log foi chamado.
Você pode verificar isso para obter mais informações: Chamadas consecutivas para console.log produzem resultados inconsistentes
fonte