获取当前元素

时间:2012-12-11 16:59:55

标签: angularjs

可以使用ng-click属性拦截$event类似处理程序中的当前事件对象。

但是有可能获得调用该方法的元素吗?

例如:

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

3 个答案:

答案 0 :(得分:6)

如果你要操纵DOM,你真的应该使用一个指令。但是,如果您拥有$event,则可以轻松get the raw element the event was triggered on

$scope.clickHandler = function($event) {
   var element = $event.target;
};

答案 1 :(得分:3)

使用angular中的指令,可以轻松访问元素。只需使用链接功能:

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>

答案 2 :(得分: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';
    }
}]);