Ответ 1
Не делай этого.
Как пояснил @CodeHater, обработка DOM-манипуляции в директиве является лучшим решением, чем включение контроллера с элементом.
Есть ли способ получить текущий элемент, где в настоящее время привязан мой 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?
Не делай этого.
Как пояснил @CodeHater, обработка DOM-манипуляции в директиве является лучшим решением, чем включение контроллера с элементом.
Ваш 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.
Я также искал подобное, но, наконец, я создал еще одну директиву, добавленную в дочерний элемент div. В блоке кода директивы я получаю объект element и размещаю всю свою связанную с событием функцию и другие инструкции там. Кроме того, я добавляю элемент в объект $scope, это помогает мне использовать этот объект еще там, где это необходимо, и не нужно искать его каждый раз, когда он мне нужен.