Javascript 检查列表是否完全以角度渲染

Javascript 检查列表是否完全以角度渲染,javascript,html,angularjs,Javascript,Html,Angularjs,我有一个ul,它使用ng repeat从数组加载数据。数组非常大,列表的负载持续时间太长 我想放置一个加载器,使其在加载开始时显示并隐藏,这是在html中完全呈现ul时的重要部分。 我的问题是,当ul完全呈现时,我找不到抛出函数的方法 我现在的做法是: 控制器: function renderMatters() { api_horus.getMatters() .success(function (data) { $scop

我有一个ul,它使用ng repeat从数组加载数据。数组非常大,列表的负载持续时间太长

我想放置一个加载器,使其在加载开始时显示并隐藏,这是在html中完全呈现ul时的重要部分。 我的问题是,当ul完全呈现时,我找不到抛出函数的方法

我现在的做法是:

控制器:

function renderMatters() {
    api_horus.getMatters()
        .success(function (data) 
        {
               $scope.matters = data.matters;
          }

        })
        .error(function (error) {
            status = 'Unable to load matters data: ' + error.message;
        });

}
HTML:

这是可行的,但警报不会在完全加载时抛出,而是在加载的一半左右抛出

2。使用模板,ng include和onload

我把ul放在另一个文件中,并将其称为模板

<div ng-include src="'template/test-loading.html'" onload="alert(‘ends’);"></div>

它也不起作用。警报显示在负载的中间。 我甚至试着将ng repeated li作为模板而不是ul,因为我读到onload仅在加载父元素时抛出。也不是成功


如何知道元素何时完全以HTML呈现


提前发送。

只需使用

<div ng-if="showMsg">{{msg}}</div>
<div ng-if="!showmMsg">
<ul ng-model="matters" class="list clearfix" ng-class="     {'floatingList':isHorizontal}">
  <li ng-repeat="matter in filtered = (matters | filter:searchText) class="matter_grid_li"></div>

您是否尝试过在componentInit函数中使用回调?您可以使用
$last
检测最后一个元素的呈现。因此,在
$last
的基础上,您可以从用户体验的角度做任何您想做的事情,如果列表足够大,您可能应该尝试某种形式的分页,这也会减少呈现页面所花费的时间。我在函数内部尝试了回调,但我不需要知道函数何时结束,我知道了。问题是,HTML中的呈现比这更持久。我需要知道ul renderI的结尾,就像最后一个方法一样。不是超级干净,但它可以工作,要检查这将要等到函数renderMatters完成,但当它完成时,HTML中的列表还没有完全加载
<div ng-include src="'template/test-loading.html'" onload="alert(‘ends’);"></div>
<div ng-if="showMsg">{{msg}}</div>
<div ng-if="!showmMsg">
<ul ng-model="matters" class="list clearfix" ng-class="     {'floatingList':isHorizontal}">
  <li ng-repeat="matter in filtered = (matters | filter:searchText) class="matter_grid_li"></div>
 $scope.showMsg = true;
 $scope.msg = "loading...";
 function renderMatters() {
    api_horus.getMatters()
       .success(function (data) 
       {
           $scope.matters = data.matters;
            $scope.showMsg = false;
            $timeout(angular.noop)
       }

    })
    .error(function (error) {
        status = 'Unable to load matters data: ' + error.message;
    });

   }