У меня есть список предметов на мой взгляд с ng-click
прикрепленными к ним:
<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>
Я обрабатываю события щелчка в foo
функции в моей директиве, передавая $event
ссылку на объект, по которому щелкнули, но я получаю ссылку на img
тег, а не на li
тег. Затем я должен сделать что-то вроде этого, чтобы получить 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
}
})();
Есть ли простой способ получить ссылку на элемент, с которым ng-click
связан, без выполнения операций DOM в моей директиве?
var elem = $event.currentTarget || $event.srcElement
. Это всегда было более удобным для просмотра, но я не знаю, нужно ли это больше.Не прямой ответ на этот вопрос, а скорее на «вопрос», по-
$event.currentTarget
видимому, будет нулевым.Это связано с тем, что console.log показывает глубоко изменяемые объекты в последнем состоянии выполнения, а не в состоянии, когда вызывался console.log.
Вы можете проверить это для получения дополнительной информации: последовательные вызовы console.log приводят к противоречивым результатам
источник