当前位置: 首页 > 面试题库 >

使用httpInterceptor和AngularJS 1.1.5实现加载微调器

秦雅逸
2023-03-14
问题内容

我在SO上找到了一个用于http / resource调用的加载微调器的示例:

  • [在httpIntercept上设置rootScope变量](plnkr:http : [//plnkr.co/edit/32Mh9UOS3Z4vnOtrH9aR?]

如您所见,实现工作正常(使用AngularJS 1.0.5)。但是,如果将源更改为AngularJS 1.1.5。该示例不再起作用。

我了解到$httpProvider.responseInterceptors1.1.5不推荐使用。相反,应该使用$httpProvider.interceptors

不幸的是,仅在Plunker中替换上述字符串并不能解决问题。有没有人使用AngularJS
1.1.5中的HttpInterceptor进行过这样的加载微调?

谢谢你的帮助!

麦可


问题答案:

感谢Steve的提示,我得以实现加载程序:

拦截器:

.factory('httpInterceptor', function ($q, $rootScope, $log) {

    var numLoadings = 0;

    return {
        request: function (config) {

            numLoadings++;

            // Show loader
            $rootScope.$broadcast("loader_show");
            return config || $q.when(config)

        },
        response: function (response) {

            if ((--numLoadings) === 0) {
                // Hide loader
                $rootScope.$broadcast("loader_hide");
            }

            return response || $q.when(response);

        },
        responseError: function (response) {

            if (!(--numLoadings)) {
                // Hide loader
                $rootScope.$broadcast("loader_hide");
            }

            return $q.reject(response);
        }
    };
})
.config(function ($httpProvider) {
    $httpProvider.interceptors.push('httpInterceptor');
});

指示:

.directive("loader", function ($rootScope) {
    return function ($scope, element, attrs) {
        $scope.$on("loader_show", function () {
            return element.show();
        });
        return $scope.$on("loader_hide", function () {
            return element.hide();
        });
    };
}
)

CSS:

#loaderDiv {
   position: fixed;
   top: 0;
   right: 0;
   bottom: 0;
   left: 0;
   z-index: 1100;
   background-color: white;
   opacity: .6;
}

.ajax-loader {
   position: absolute;
   left: 50%;
   top: 50%;
   margin-left: -32px; /* -1 * image width / 2 */
   margin-top: -32px; /* -1 * image height / 2 */
   display: block;
}

HTML:

<div id="loaderDiv" loader>
    <img src="src/assets/img/ajax_loader.gif" class="ajax-loader"/>
</div>


 类似资料:
  • 问题内容: 我有一个网页,该网页使用命令shell_exec运行python脚本。我想要一个加载微调器,在Python脚本运行时显示“请稍等此页面加载”消息,然后在执行完之后显示其余的回显HTML。 我找到了看似不错的解决方案,但是我对ajax还是陌生的,所以我不知道如何使用该解决方案。我试着做 但这没有用。我需要调用ajax来执行ajaxStart吗?我怎么称呼它?我应该用ajax代码包装she

  • 问题内容: 我有一个从链接启动的Bootstrap模式。在AJAX查询从数据库中获取数据的同时,它只停留在空白处约3秒钟。如何实现某种负载指示器?默认情况下,twitter引导程序是否提供此功能? 编辑:模态的JS代码 问题答案: 我猜您正在使用jQuery.get或其他jQuery ajax函数来加载模态。您可以在ajax调用之前显示指示器,并在ajax完成后将其隐藏。就像是

  • 问题内容: 我有一个React应用,可以调用我的API,该API返回URL列表以用作imy图像src。 我用来显示图像加载时的加载微调组件。 我有一个变量来确定图像是否正在加载。 我无法弄清楚如何停止显示正在加载的微调器,并在它们全部加载后显示图像。 这是我的代码: Photos.jsx Photo.jsx 我尝试将我的最后一项用于,但是它永远不会被调用,因为由于仍然显示了微调框,所以它从未设置为

  • 我有一个控制器方法,它接受一个POJO。 如果我将它作为常规依赖项添加到控制器中,它将被加载(这并不奇怪),但仍然没有被使用。我是不是漏掉了一步?

  • 我使用下面的布局实现了一个加载微调器图标: 但这使用默认的Android微调器。我想用我从preloaders.net得到的加载图标来替换微调器,如下所示: 如何用此自定义微调器替换默认的Android微调器?

  • 本文向大家介绍使用Feign实现微服务间文件下载,包括了使用Feign实现微服务间文件下载的使用技巧和注意事项,需要的朋友参考一下 在使用Feign做服务间调用的时候,当下载大的文件会出现堆栈溢出的情况。另外,文件管理服务(服务提供者)文件下载接口无返回值,是通过HttpServletRespoonse传输的流数据来响应,那么服务消费者该如何接受下载的数据呢? 一. 示例介绍 我们调用feign_