Подтвердить что ты не робот

Angular элемент пропуска ng-init в область видимости

Есть ли способ получить текущий элемент, где в настоящее время привязан мой 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?

4b9b3361

Ответ 1

Не делай этого.

Как пояснил @CodeHater, обработка DOM-манипуляции в директиве является лучшим решением, чем включение контроллера с элементом.

Ответ 2

Ваш 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.

Ответ 3

Я также искал подобное, но, наконец, я создал еще одну директиву, добавленную в дочерний элемент div. В блоке кода директивы я получаю объект element и размещаю всю свою связанную с событием функцию и другие инструкции там. Кроме того, я добавляю элемент в объект $scope, это помогает мне использовать этот объект еще там, где это необходимо, и не нужно искать его каждый раз, когда он мне нужен.