如何在AngularJS控制器中获取当前作用域元素?

kiayqfof  于 2023-02-11  发布在  Angular
关注(0)|答案(2)|浏览(160)

我有一个outerItem列表,在每个outerItem中,我有一个innerItem列表,它们是动态排序的。
当鼠标光标指向innerItem之一时,我必须在innerItem元素的正上方显示弹出窗口。
Popupdiv是body的子元素,因为我不希望每个innerItem都有一个单独的弹出窗口。
ng-mouseover上,我调用了一个函数,该函数将left/top属性设置为绝对定位的弹出窗口。因此,对于每个innerItems,我希望调用jQuery .offset()方法,该方法将从页面左上角提供left/top值。
那么我怎样才能得到当前scope元素的jQuery对象呢?或者,如果我选择了错误的方法

qvtsj1bj

qvtsj1bj1#

在控制器中:

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

dldeef672#

更好更正确的解决方案是有一个指令,无论是指令的控制器还是主控制器,作用域都是一样的,使用$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'
});

相关问题