我正在开发基于AngularJS的商业应用。在我展示视图之前的最常见情况中,我通过进行一些$ http POST调用来加载一些数据。我想在此期间展示装载机。到目前为止,我已经通过$广播事件并使用专用控制器在其他地方捕获它来完成它。这允许我在每个网页上有一个加载器,这很好。至少现在(是。 但也许有更好的方法吗?
答案 0 :(得分:0)
不是自己广播事件,而是可以利用路由提供商抛出视图更改的开始和结束事件。
Angular router($ route)
$rootScope.$on('$routeChangeStart', function(e) {
openLoader();
});
$rootScope.$on('$routeChangeSuccess', function(e) {
closeLoader();
});
ui-router($ state)
$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
openLoader();
});
$rootScope.$on('$stateChangeSuccess', function(e, toState, toParams, fromState, fromParams) {
closeLoader();
});
如果您有不应显示加载器的状态/路由,您可能需要在此处添加过滤器。
答案 1 :(得分:0)
方法: 您可以在主页面中包含块级元素,其中包含gif加载程序或“正在加载...”文本。默认情况下,应隐藏此元素的可见性。
如果所有请求都已完成,并且没有待处理的请求,则可以隐藏此块级元素,在内部请求拦截器中,您可以使块级元素可见,并在Response拦截器内部。
您可以在一个共同的位置实现此功能,并且到目前为止已将此视为最佳方法