Tengo una lista de elementos en mi vista con ng-click
adjuntos:
<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>
Estoy manejando los eventos de clic en la foo
función en mi directiva, pasando $event
como referencia al objeto en el que se ha hecho clic, pero obtengo una referencia a la img
etiqueta, en lugar de la li
etiqueta. Luego tengo que hacer cosas como esta para obtener 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
}
})();
¿Hay una manera simple de obtener la referencia al elemento al que ng-click
está vinculado, sin realizar operaciones DOM en mi directiva?
var elem = $event.currentTarget || $event.srcElement
. Siempre ha sido más amigable, pero no sé si es necesario.No es una respuesta directa a esta pregunta, sino más bien al "problema" de
$event.currentTarget
aparentemente ser puesto a nulo.Esto se debe al hecho de que console.log muestra objetos mutables profundos en el último estado de ejecución, no en el estado en que se llamó a console.log.
Puede verificar esto para obtener más información: las llamadas consecutivas a console.log producen resultados inconsistentes
fuente