ng-click'den orijinal öğe al


204

Bence ng-clickekli olan öğelerin bir listesi var :

<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>

Yönlendirmemdeki fooişlevdeki tıklama olaylarını, $eventtıklanan nesneye başvuru olarak iletiyorum, ancak imgetikete değil , etikete başvuru alıyorum li. Sonra almak için böyle şeyler yapmak zorunda 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-clickDirektifimde DOM işlemleri yapmadan bağlı olan öğeye referans almanın basit bir yolu var mı ?

Yanıtlar:


318

Bunun $event.currentTargetyerine ihtiyacınız var $event.target.


3
Teşekkürler, çalışıyor. $ Event nesnesindeki currentTarget özelliğinin null değerine ayarlanması garip.
Ozrix

2
Bu kesinlikle garip ... $ olay nesnesini günlüğe kaydederseniz, $ event.currentTarget null gibi görünüyor. Ancak, $ event.currentTarget başvurusunu günlüğe kaydederseniz, doğru öğeyi gösterir.
richardaday

6
Genellikle kullanacağım var elem = $event.currentTarget || $event.srcElement. Her zaman daha çapraz göz dostu oldu, ama artık gerekli olup olmadığını bilmiyorum.
WebWanderer

12
console.log, konsol.log çağrıldığında değil derin yürütme nesnelerini son yürütme durumunda gösterir. bkz. stackoverflow.com/questions/22059811/…
Tivie

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.