首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对每个控制器进行通用旋转?

如何对每个控制器进行通用旋转?
EN

Stack Overflow用户
提问于 2016-10-04 06:31:52
回答 1查看 58关注 0票数 0

我有一个有几个控制器的角形js项目,每个控制器我使用这么多api调用,这需要很长时间,所以我想在每个页面调用api时将加载旋转放入其中。

我想保留一个根范围变量,如

代码语言:javascript
复制
 $rootScope.showLoading=false;

当我从任何控制器中生成这个变量时,比如

代码语言:javascript
复制
  $rootScope.showLoadin=true; 

那么旋转就会到来,当我使它变假的时候,旋转就会消失。

是怎么完成的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-04 06:34:11

您可以为您的应用程序提出的每一个http请求应用加载程序,跟踪活动和解析请求的数量。因此,对于每个请求,xhrCreations1添加,而对于每个已解析的xhrResolutions,则由1添加。

因此,如果活动请求的数量超过解析量,服务将被更新为true值。然后,当没有任何请求处于活动状态时,服务将使用false进行更新。因此,由于scope变量设置为false,所以将加载程序隐藏在控制器中。

代码语言:javascript
复制
core.factory('httpInterceptor', ['$q', 'globalStates', function ($q, globalStates) {

    var xhrCreations = 0,
            xhrResolutions = 0;

    function isLoading() {
        return xhrResolutions < xhrCreations;
    }

    return {
        request: function (req) {

            xhrCreations++;

            globalStates.set('isRequestActive', isLoading());

            return req;
        },
        requestError: function (err) {

            xhrResolutions++;

            globalStates.set('isRequestActive', isLoading());

            return $q.reject(err);
        },
        response: function (res) {

            xhrResolutions++;

            globalStates.set('isRequestActive', isLoading());

            return res;
        },
        responseError: function (err) {

            xhrResolutions++;

            globalStates.set('isRequestActive', isLoading());

            return $q.reject(err);
        }
    };
}]);

服务:

代码语言:javascript
复制
core.service('globalStates', [function() {

  var gs = this;

  var states = {};

  gs.set = function(k, v) {
    states[k] = v;
  };

  gs.get = function(k) {
    return k ? states[k] : states;
  };
}]);

然后,您可以通过来自核心控制器的观察者访问服务中的值:

代码语言:javascript
复制
$scope.$watch(function() {
  return globalStates.get();
}, function(states) {
  $rootScope.showLoading = states.isLoading;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39845559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档