【问题标题】:Good pattern for a loader in Angular app?Angular 应用程序中加载程序的好模式?
【发布时间】:2015-02-27 09:12:16
【问题描述】:

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

【问题讨论】:

标签: angularjs preloader


【解决方案1】:

您可以利用路由提供者在视图更改时抛出的开始和结束事件,而不是自己广播事件。

角度路由($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();
});

如果您有不应显示加载程序的状态/路线,您可能希望在此处添加过滤器。

【讨论】:

    【解决方案2】:

    方法: 您可以在主页中包含 gif 加载器或“正在加载...”文本的块级元素。这个元素的可见性默认应该是隐藏的。

    在请求拦截器中,您可以使块级元素可见,如果所有请求都已完成并且没有待处理的请求,则可以在响应拦截器中隐藏此块级元素。

    您可以在一个共同的地方实现此功能,并且到目前为止发现这是一种最佳方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 2019-12-27
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 2018-06-14
      相关资源
      最近更新 更多