如何知道指令的最后一个元素何时在 AngularJS 中链接

How to know when the last element of a directive has been linked in AngularJS?

本文关键字:AngularJS 链接 何时 元素 何知道 指令 最后一个      更新时间:2023-09-26

我有一个页面,其中包含我的指令中的多个元素。我需要用来自 API 的数据填充这些元素,并且我想通过一次 API 调用获取所有元素的数据。

在我的指令的 link 函数中,我将每个元素添加到数组中,因此我有一个所有元素的集合。这样,当我从 API 获得响应时,我可以用正确的数据填充所有元素。但是我不知道我什么时候链接了最后一个元素,所以我不知道什么时候可以运行 API 调用,并确保获取所有元素的数据。我的问题是我该怎么做?我怎么知道上一个元素是 DOM 中的最后一个此类元素,以便我可以运行我的 API 调用并获取数据?

angular.module('myApp',[])
.directive('someElement', function (postContentFactory, $rootScope) {
        var postElements = [];
        function fetchData() { 
            console.log("I'm fetching data and putting it into the elements");
        };
        return {
            link: function (scope, element, attributes) {
                postElements.push(element);
                // if this is last element of this kind in DOM, I
                // want to run fetchData();
            },
            restrict: 'E',
            templateUrl: 'templates/some-template.html'
        }
    }
)

<!-- HTML snippet that is server-side generated -->
<some-element id="12" type="someType"></some-element>
<some-element id="15" type="someType"></some-element>

如果指令在ng-repeat内运行,则ng-repeat指令会添加多个子作用域属性

您可以在指令中检查scope.$last .

如果不是这种情况,您的问题需要更多关于如何使用指令的详细信息