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