Mam listę elementów w moim widoku z ng-click
dołączonymi do nich:
<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>
Obsługuję zdarzenia kliknięcia w foo
funkcji w mojej dyrektywie, przekazując $event
jako odwołanie do obiektu, który został kliknięty, ale otrzymuję odwołanie do img
tagu, a nie li
tagu. Następnie muszę zrobić takie rzeczy, aby uzyskać 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
}
})();
Czy istnieje prosty sposób uzyskania odniesienia do elementu, który ng-click
jest związany, bez wykonywania operacji DOM w mojej dyrektywie?
var elem = $event.currentTarget || $event.srcElement
. Zawsze był bardziej przyjazny dla przeglądarek, ale nie wiem, czy jest to konieczne.Nie bezpośrednia odpowiedź na to pytanie, ale raczej na „kwestię”
$event.currentTarget
najwyraźniej zerową.Wynika to z faktu, że console.log pokazuje głęboko zmienne obiekty w ostatnim stanie wykonania, a nie w stanie, w którym wywołano console.log.
Możesz to sprawdzić, aby uzyskać więcej informacji: Kolejne połączenia z plikiem console.log dają niespójne wyniki
źródło