53

我有一个outerItems 列表。在每个outerItem 内,我都有一个innerItems 列表。它们是动态排序的。

当鼠标光标指向其中一个innerItems 时,我必须在该innerItem 元素的正上方显示弹出窗口。

弹出 div 是 body 的子项,因为我不想为每个 innerItems 单独弹出一个弹出窗口。

正如我所看到的那样——ng-mouseover我调用了将左/上属性设置为绝对定位弹出窗口的函数。因此,对于每个 innerItems,我想调用 jQuery.offset()方法,该方法从页面的左上角为我提供左/上值。

那么如何获取当前作用域元素的 jQuery 对象呢?或者,如果我选择了错误的方式

4

2 回答 2

70

在控制器中:

function innerItem($scope, $element){
    var jQueryInnerItem = $($element); 
}
于 2012-10-20T10:41:39.250 回答
7

更好和正确的解决方案是有一个指令。范围是相同的,无论是在指令的控制器还是主控制器。用于$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'
});
于 2015-03-18T16:30:55.830 回答