在 AngularJS 中显示加载栏时禁用控件
Disabling controls when showing loading bar in AngularJS
我正在使用AngularJS开发一个Web应用程序。我想在从服务器加载数据需要很长时间时显示负载栏。
为了模拟大量的数据负载,我使用$timeout,在操作开始时显示负载条,在操作结束时隐藏它。
我面临的问题是,当然我只在操作开始时显示动画图像,因此在加载数据期间仍然可以单击所有控件(按钮、链接等)。我想找到一种方法在加载过程中禁用所有控件,以避免用户单击它们。
你能在这里帮我吗?提前非常感谢!
我的一些代码如果有帮助:
我在 html 中的控件:
<div class="header">
<ul id="headerLinks" class="nav nav-pills pull-right">
<li ng-class="menuItems.home.selected && 'active'"><a ng-click="changeRootPath('home')">Home</a></li>
<li ng-class="menuItems.products.selected && 'active'"><a ng-click="changeRootPath('products')">Products</a></li>
<li ng-class="menuItems.register.selected && 'active'"><a ng-click="changeRootPath('register')">Sign in</a></li>
<li ng-class="menuItems.login.selected && 'active'"><a ng-controller="LoginController" ng-click="changeRootPath('login');open('md')" >Login</a></li>
<li ng-class="menuItems.contact.selected && 'active'"><a ng-click="changeRootPath('contact')">Contact</a></li>
</ul>
<h3 class="text-muted">Arena Club</h3>
</div>
显示/隐藏加载栏的功能:
$scope.showLoader=function()
{
$scope.loader.loading=true;
}
$scope.hideLoader=function()
{
$scope.loader.loading=false;
}
以及附加到视图的控制器:
app.controller('ProductsController', ['$scope','productsFactory','commonFactory','productsFactoryHelper','$timeout',function ($scope,productsFactory,commonFactory,productsFactoryHelper,$timeout)
{
var _init=function()
{
//loadAllProducts();
$scope.showLoader();
$timeout(loadAllProducts, 6000);
}
var loadAllProducts=function()
{
productsFactory.query(function(response)
{
$scope.products=response;
$scope.hideLoader();
},function(error)
{
commonFactory.Pop('error','Ups! The products are not available at this moment. Please try again later. If the problem persists contact a system administrator');
});
}
_init();
}]);
在不了解控件的外观或设置方式的情况下,这里有一些想法:
- 如果它们是 HTML 表单,则可以在输入中使用
disabled
属性。使用角度,您可以做ng-disabled='loader.loading'
. - 您可以将整个加载屏幕放在一个叠加层中,或者只是控件上的一个div,具有更高的
z-index
以防止其下方的项目可单击。如果在加载程序之外,您仍然可以使用与加载程序相同的标志有条件地显示它。 - 您可以使用
ngHide
或ngIf
指令让控件隐藏/删除自身。
相关文章:
- 正在等待加载文件(加载JavaScript)
- 调用按钮单击事件 ajax 加载的用户控件
- 用户控件内的 ASP 列表视图.如何在用户控件完全加载后触发 javascript
- 在 Web 浏览器控件中加载本地文件
- 在 AngularJS 中显示加载栏时禁用控件
- 如何在基于泛型类的选择在页面加载时显示/隐藏控件
- 页面加载后控件的空引用
- 需要在加载时访问 java 脚本中的 asp.net 服务器控件
- 如何将数据从 sql 服务器加载到 Bing Ajax 地图控件
- 控件加载事件
- Javascript 禁用作为 asp.net 控件加载的元素的内联单击
- 在其中隐藏面板加载控件
- 在 WP7 的 Web 浏览器控件中加载 HTML 脚本和视频播放
- 根据所选内容在面板中重新加载不同的HTML控件
- 如何在多实例web用户控件上执行javascript页面加载事件
- 点击任何链接,web用户控件加载而不返回
- 从WPF浏览器控件加载动态HTML
- 奇怪的jQuery/JS错误:如果我把脚本之前的控件加载我得到0x800a138f;如果我把它放在后面,我得到0x800
- 单击不同的控件加载不同的内容
- 从 FileUpload 控件加载带有 Javascript 的图像 ASP.NET