7

ng-clickプロパティを使用することで、同様のハンドラーで現在のイベントオブジェクトをインターセプトすることができ$eventます。

しかし、メソッドが呼び出された要素を取得することは可能ですか?

たとえば:

<div ng-controller='myController'>
  <div>{{distortThatDiv($element)}}</div>
</div>
4

3 に答える 3

7

DOMを操作する場合は、実際にはディレクティブを使用する必要があります。ただし、があれば、イベントがトリガーされた生の要素を簡単に取得$eventできます。

$scope.clickHandler = function($event) {
   var element = $event.target;
};
于 2012-12-11T17:18:50.850 に答える
4

角度のあるディレクティブを使用すると、要素に簡単にアクセスできます。リンク機能を使用するだけです。

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>
于 2012-12-20T09:32:14.433 に答える
2

別の方法があります(ただし、これが適切な方法かどうかはわかりません)。

テンプレート内:

<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';
    }
}]);
于 2014-09-21T15:34:10.800 に答える