0

我遇到了一些角度问题,我似乎无法理解。我正在编写一个指令,它将检查窗口的滚动位置是否通过了 DOM 元素的末尾。

我在这个元素中使用 ng-repeat 来解析我的数据。我现在遇到的问题是我的指令第一次运行元素的高度还不正确,因为我的数据尚未解析。

加载包含数据后,有什么方法可以执行我的指令?我可以用肮脏的黑客来解决它,但理想情况下,我希望这一切都在一个单一的指令中,因为它将被多次使用。

这是示例代码:

<div scrollspy>
    <a href="#" ng-repeat="item in items"></a>
</div>

angular.module('module').directive('scrollspy', ['$window', function ($window) {
    return function (scope, element) {
        // element height here is only 30 because our data is not loaded yet. 
        // I whish to execute this code when all items are parsed in the DOM
    }
}])

谢谢大家的时间!

4

1 回答 1

1

您始终可以在列表中的最后一个指令呈现后运行您的计算。

<div scrollspy>
    <a href="#" ng-repeat="item in items" class="scrollspyItem"></a>
</div>

angular.module('module').directive('scrollspyItem', function() {
    return {
        restrict: 'C',
        link: function(scope, element, attrs) {
            // do your normal directive stuff here
            if (scope.$last) {
                // this is the last item in the list
                // calculate size now
            }
        }
    };
});
于 2013-07-29T19:54:05.037 回答