我有一个项目列表在我的视图与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操作在我的指令?


你需要$event。currentarget代替$event.target。


不是对这个问题的直接回答,而是对$event的“问题”的回答。currentTarget显然被设置为null。

这是因为console.log在执行的最后一个状态时显示深度可变对象,而不是在调用console.log时的状态。

您可以查看此命令以获取更多信息:连续调用console.log产生不一致的结果