加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何从http拦截器广播?

发布时间:2020-12-17 17:45:07 所属栏目:安全 来源:网络整理
导读:使用AngularJS 1.2 我的拦截器看起来像这样: $httpProvider.interceptors.push(['$q','$log','$rootScope',function ($q,$log,$rootScope) { return { 'request': function(config) { $rootScope.$broadcast('spin'); console.info('request!'); return con
使用AngularJS 1.2

我的拦截器看起来像这样:

$httpProvider.interceptors.push(['$q','$log','$rootScope',function ($q,$log,$rootScope) {
            return {
                'request': function(config) {
                    $rootScope.$broadcast('spin');
                    console.info('request!');
                    return config || $q.when(config);
                },...

在我的导航控制器中(它处理并将加载器/微调器绑定到视图):

$rootScope.$watch('spin',function(event) {
    console.info('spin');
    $scope.spinner++;
});

广播似乎只在收到的所有回复结束时发生一次,即使我可以看到很多请求!在控制台日志中.

我该如何管理我的全局微调器/加载器?

编辑
我想在加载数据时在导航栏中显示加载器/微调器.

解决方法

$watch函数不监听广播消息.它会监视范围的变化.在这种情况下,只要$rootScope.spin发生更改,就会调用一个函数,这会立即被调用(默认情况下),这就是你调用一次的原因.

$on函数就是你想要的,因为它将收听广播事件.

$rootScope.$on('spin',function(msg,data) {
    console.info('spin');
    $scope.spinner++;
});

如果你很好奇,我已经把一个完整的工作示例放在一起:

http://codepen.io/BrianGenisio/pen/wIBHz

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读