web-dev-qa-db-ja.com

ng-clickから元の要素を取得

私のビューには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
       }
   })();

私のディレクティブでDOM操作を行わずにng-clickがバインドされている要素への参照を取得する簡単な方法はありますか?

193
Ozrix

$event.currentTargetの代わりに$event.targetが必要です。

302
Engineer

この質問に対する直接的な回答ではなく、むしろ$event.currentTargetの「問題」に対する回答は明らかにnullに設定されています。

これは、console.logが呼び出されたときの状態ではなく、実行の最後の状態でconsole.logに可変の可変オブジェクトが表示されるためです。

あなたはより多くの情報のためにこれをチェックすることができます: console.logへの連続した呼び出しは矛盾した結果を生みます

13
Tivie