Как получить текущий объем dom-элемент в контроллере AngularJS?


у меня есть список внешних элементов. Внутри каждого внешнего элемента у меня есть список внутренних элементов. Они динамически сортируются.

когда курсор мыши указывает на один из innerItems, я должен показать всплывающее окно прямо над этим элементом innerItem.

Popup div-это ребенок тела, потому что я не хочу иметь отдельное всплывающее окно для каждого из innerItems.

так, как я это вижу-на ng-mouseover Я вызываю функцию, которая устанавливает свойства left / top для моего абсолютно позиционированного всплывающий. Поэтому для каждого из innerItems я хотел бы назвать jQuery .offset() метод, который дает мне левые / верхние значения из верхнего левого угла страницы.

Так как я могу получить объект jQuery текущего элемента области? Или, если я выбрал неправильный путь

2 53

2 ответа:

контроллер:

function innerItem($scope, $element){
    var jQueryInnerItem = $($element); 
}

лучшее и правильное решение-это директива. Область действия одна и та же, будь то контроллер директивы или главный контроллер. Используйте $element для выполнения операций DOM. Метод, определенный в директивном контроллере, доступен в главном контроллере.

пример, нахождения дочернего элемента:

var app = angular.module('myapp', []);
app.directive("testDir", function () {
    function link(scope, element) { 

    }
    return {
        restrict: "AE", 
        link: link, 
        controller:function($scope,$element){
            $scope.name2 = 'this is second name';
            var barGridSection = $element.find('#barGridSection'); //helps to find the child element.
    }
    };
})

app.controller('mainController', function ($scope) {
$scope.name='this is first name'
});