Javascript 访问指令绑定到的元素

Javascript 访问指令绑定到的元素,javascript,angularjs,Javascript,Angularjs,我想创建一个应用于元素的指令,将其最大高度设置为窗口高度减去从元素顶部到窗口顶部的距离 我是这样试的 .directive('resize', function ($window) { return function (scope, element) { var w = angular.element($window); scope.getWindowDimensions = function() { return { 'h': w.height() };

我想创建一个应用于元素的指令,将其最大高度设置为窗口高度减去从元素顶部到窗口顶部的距离

我是这样试的

.directive('resize', function ($window) {
return function (scope, element) {
    var w = angular.element($window);
    scope.getWindowDimensions = function() {
        return { 'h': w.height() };
    };
    scope.$watch(scope.getWindowDimensions, function(newValue, oldValue) {
        //get header height including margins
        var headerHeight = $('.page-header').outerHeight(true);

        scope.windowHeight = newValue.h;

        scope.style = function() {
            return {
                'height': (scope.windowHeight  - headerHeight) + 'px',
                'max-height': (scope.windowHeight  - headerHeight) + 'px'
            };
        };
    }, true);

    w.bind('resize', function() {
        scope.$apply();
    });
}
})
但我必须为每个元素添加一个var,该元素位于我要设置其高度的元素之上。所以我相信使用

var scrollTop     = $(window).scrollTop(),
    elementOffset = $('#my-element').offset().top,
    distance      = (elementOffset - scrollTop);
这样做会更好,因为它会执行与元素及其设置相关的所有度量,但是如何在不添加任何额外类或标识符的情况下从指令中访问该元素

我还需要创建一个隔离范围,以便在单个页面上多次使用它吗


我的目标基本上是让我的web apps body元素等于窗口的高度,并且包含任何高于该高度的div的元素都有滚动条。

谢谢,为什么你认为将元素数组发送到指令中比只从元素顶部测量更好?我想如果两个元素依次使用同样的指令,那么它就可以正常工作了。
 1)It would be better if you have isolate scope. so that the directive can be user multiple elements with different heights.
 2) Send an array of elements (Which are above the required element) as an attribute to the directive. And calculate the height to be deducted from window height.