Angular应用程序中加载程序的良好模式?

时间:2015-02-27 09:12:17

标签: angularjs preloader

我正在开发基于AngularJS的商业应用。在我展示视图之前的最常见情况中,我通过进行一些$ http POST调用来加载一些数据。我想在此期间展示装载机。到目前为止,我已经通过$广播事件并使用专用控制器在其他地方捕获它来完成它。这允许我在每个网页上有一个加载器,这很好。至少现在(是。 但也许有更好的方法吗?

2 个答案:

答案 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拦截器内部。

您可以在一个共同的位置实现此功能,并且到目前为止已将此视为最佳方法