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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |