Angular ng-init将元素传递给范围

时间:2014-03-10 05:42:54

标签: angularjs

有没有办法获取我的ng-init当前绑定的当前元素?

例如:

<div ng-init="doSomething($element)"></div>

我相信有一种方法可以实现ng-click,但是我无法使用ng-init这样做:

<div ng-click="doSomething($event)"></div>

控制器:

$scope.doSomething = function(e){ 
    var element = angular.element(e.srcElement); 
}

如何使用ng-init进行此操作?

3 个答案:

答案 0 :(得分:8)

您的HTML:

<div ng-app='app' ng-controller="Ctrl">
    <div my-dir></div>
</div>

您的Javascript:

var app = angular.module('app', [], function () {});

app.controller('Ctrl', function ($scope) {
    $scope.doSomething = function (e) {
        alert(e);
    };
});

app.directive('myDir', function () {
    return function (scope, element, attrs) {
        scope.doSomething(element);
    };
});

从上面,element将是您的DOM对象。

答案 1 :(得分:2)

不要这样做。

正如@CodeHater所说,在指令中处理DOM操作比使用元素控制器更好。

答案 2 :(得分:1)

我也在寻找类似的东西,但最后我创建了一个添加到子div元素的指令。在指令代码块中,我得到了元素对象,并将所有与事件相关的函数和其他指令放在那里。另外,我将元素添加到$ scope对象,这有助于我在其他地方使用此对象,并且无需在每次需要时都找到它。