加载微调器在渲染时卡住
loading spinner stuck while rendering
本文关键字:加载 更新时间:2023-09-26
我有一个主要用angularJS编写的SPA。在选项卡之间切换时,我激活了一个 ng-repeat,它会在该选项卡上生成很多高图表。
所有这些高级图表(包含大量信息)的呈现需要 5-40 秒,具体取决于搜索数据。
这是微调器的指令:
Directives.directive('Loader', function () {
return {
template: ''
<div class="row animated fadeIn" ng-if="showLoading" style="margin-top:30px;">'
<div class="col-md-12" style="text-align:center">'
<img src="Content/Images/spinLoader.gif" />'
</div>'
</div>'
};
});
以便指令侦听showLoading
以激活微调器或将其关闭。
在每个选项卡中开始渲染时,我给showLoading
值 true,并在高图表中添加了一个 onLoad
属性,以便在完成渲染时showLoading
给出值 false:
chart: {
type: 'boxplot',
zoomType: 'xy',
//width: 580,
//height: 340
events: {
load: function () {
$scope.showLoading = false;
}
}
},
问题是在渲染所有高图表时,微调器有点卡住并且不旋转。
当然,将微调器放在那里的整个想法是向用户显示应用程序没有卡住,而当前的情况会导致用户认为它被卡住了。
需要明确的是,GIF 确实会旋转到高图表开始显示的点 - 这意味着从图表显示为空的点到渲染完成的点
想法将不胜感激
正如您在问题中提到的,您使用 ng-repeat 在选项卡中生成大量高图表。
ng-repeat将迭代给定的项目列表,所有高图表加载将立即启动。加载大量数据可能会冻结浏览器,并且可能是由于哪个微调器无法按预期工作。
我建议使用延迟加载技术来加载大量数据集,而不是ng-repeat。拆分需要加载到适当任务中的整体高图表
示例:假设选项卡中要加载 10 个高图表。 根据其数据结构和复杂性的级别,将这些图表的加载分为 3 或 4 个步骤。
- 第 1 步:-显示微调器 - 完成后加载 3 个高图表
- 第 2 步:完成后再加载 3 个图表
- 第 2 步:加载 4 个图表,隐藏微调器
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- jQuery Lazy加载动画滚动
- Html页面上的多个Base64图像和平滑加载
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使该数据在所有元素中加载
- Chrome扩展没有't在重新加载之前考虑期权价值
- 使用javascript在Flash中加载外部图像
- Ajax文件加载和<输入>文件加载
- 使用javascript函数在页面初始化后加载jquery
- 如何防止网页加载后自动启动功能