Ich habe eine Liste von Elementen in meiner Ansicht mit ng-click
angehängten Elementen :
<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>
Ich verarbeite die Klickereignisse in der foo
Funktion in meiner Direktive und übergebe sie $event
als Verweis auf das Objekt, auf das geklickt wurde. Ich erhalte jedoch einen Verweis auf das img
Tag und nicht auf das li
Tag. Ich muss dann solche Sachen machen, um das zu bekommen 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
}
})();
Gibt es eine einfache Möglichkeit, den Verweis auf das ng-click
gebundene Element abzurufen, ohne DOM-Operationen in meiner Direktive auszuführen?
var elem = $event.currentTarget || $event.srcElement
. Es war schon immer Cross-Browse-freundlich, aber ich weiß nicht, ob es noch nötig ist.Keine direkte Antwort auf diese Frage, sondern auf das "Problem",
$event.currentTarget
anscheinend auf Null gesetzt zu werden.Dies liegt an der Tatsache, dass console.log im letzten Ausführungsstatus tief veränderbare Objekte anzeigt, nicht in dem Zustand, in dem console.log aufgerufen wurde.
Sie können dies überprüfen, um weitere Informationen zu erhalten: Aufeinanderfolgende Aufrufe von console.log führen zu inkonsistenten Ergebnissen
quelle