ng-click
プロパティを使用することで、同様のハンドラーで現在のイベントオブジェクトをインターセプトすることができ$event
ます。
しかし、メソッドが呼び出された要素を取得することは可能ですか?
たとえば:
<div ng-controller='myController'>
<div>{{distortThatDiv($element)}}</div>
</div>
ng-click
プロパティを使用することで、同様のハンドラーで現在のイベントオブジェクトをインターセプトすることができ$event
ます。
しかし、メソッドが呼び出された要素を取得することは可能ですか?
たとえば:
<div ng-controller='myController'>
<div>{{distortThatDiv($element)}}</div>
</div>
DOMを操作する場合は、実際にはディレクティブを使用する必要があります。ただし、があれば、イベントがトリガーされた生の要素を簡単に取得$event
できます。
$scope.clickHandler = function($event) {
var element = $event.target;
};
角度のあるディレクティブを使用すると、要素に簡単にアクセスできます。リンク機能を使用するだけです。
angular.module('myModule', [], function ($compileProvider) {
$compileProvider.directive('distortThatDiv', function distortThatDivDirective() {
return {
restrict: 'A',
link : function (scope, element, attrs) {
element.on('click', function () {
// do something
});
}
};
});
});
あなたのhtmlは次のようになります:
<div ng-controller='myController'>
<a distort-that-div>My link</a>
</div>
別の方法があります(ただし、これが適切な方法かどうかはわかりません)。
テンプレート内:
<div data-ng-click="foo()">Lorem ipsum</div>
コントローラ内:
angular.module('fooApp')
.controller('FooController', ['$scope', '$window', '$log', function FooController ($scope, $window, $log) {
$scope.foo = function foo () {
$log.info($window.currentTarget.innerHTML); // Outputs 'Lorem Ipsum';
}
}]);