在我的应用程序中,我已经在每个选项卡中加载了form
的选项卡,其中包含一定量的控件!某些选项卡将拥有大量控件,其中一些可能会少一些。所以我试图实现的是当内容呈现为html时显示loader
。这些内容将始终在加载页面时加载,但只有在单击此选项卡时才会进行呈现。看下面的代码!角度js渲染速度[缓慢]阻止装载器显示
$scope.activetab = function (tabname) {
showLoader();
if (tabname == 'General')
$scope.GeneralAct = true;
else if (tabname == 'Contact Information')
$scope.ContactAct = true;
else if (tabname == 'Position/Hierarchy')
$scope.PositionAct = true;
else if (tabname == 'Ids and Program Access')
$scope.IdsAct = true;
else if (tabname == 'Equipment')
$scope.EquipmentAct = true;
else if (tabname == 'Licensing')
$scope.LicensingAct = true;
};
function showLoader()
{
$('body').append('<div class="loader"></div>');
}
发生了什么事是showLoader
不能工作,直到渲染完成。
现在当我把alert
后showLoader
它会着火和loader
将被显示。我觉得alert
会停止代码的当前执行,并等待alert
的用户响应,并且它会渲染在此之前执行的任何内容!那么是否有任何解决方法,以便我可以显示不等待其他html内容呈现的loader
?
我到目前为止试过的东西?
- 试图返回
promise
从showLoader
功能,并试图以包裹if else
代码$.when
和.then
功能。 - 试图保持
<div class='loader'></div>
在身体,而不是每次追加它,并试图toggle
或fadeIn/fadeOut
它在showLoader
。 - 尝试保留
if else
在setTimeOut
后几秒钟内执行它。
但不幸的是,所有的结果返回没有成功!如果有任何解决方法来显示加载程序,那么我会很乐意实现它!
使用Angular时,不要在jQuery中添加东西。尝试在jQuery中停止思考并采用Angular的方法。在DOM中写入你的div,并在条件下隐藏/显示它。 '
' –@JeremyThille ..你能给我一点详细的例子! –
这是基本的角度的东西。这实际上是你尝试的第二件事情:试图保持
身体,而不是每次都追加它,并试图切换或淡入/淡出在showLoader它。这是要走的路。你的showLoader()函数超出了Angular的世界。这不在范围内。这就是执行延迟的原因。尝试$ timeout(function(){showLoader = true;}) –