rootScope中的无限$ digest循环

时间:2017-08-25 16:46:07

标签: javascript angularjs

在我项目的rootScope中,我定义了一个实现$ http调用的函数。

angular.module('rsa',['ngRoute', 'ngCookies', 'ngMaterial'])
.config(function($routeProvider, $httpProvider){
    $routeProvider.when('/chapters', {
        ...
    });

    $routeProvider.when('/themes', {
       ...
    });

    // ... more routes

    $routeProvider.otherwise('/home');
  })
.controller(...)
.run(['$rootScope', 'UserService', '$location', '$cookies','$http', '$q', 
  function(rootScope, UserService, location, cookies, http, $q){
      rootScope.isAdmin = function(){
      return $http.get('/isAdmin').then(function(resp){...}, function(resp)
      {...})
   }
}])

rootScope的isAdmin方法会导致无限的摘要循环错误。 同时,相同的$ http调用(来自isAdmin方法)在其他控制器中运行良好。

我已经阅读了一些关于可能出现什么问题的内容,我发现$ http服务调用$ apply来强制$ digest周期,但我不明白$ $会发生什么http服务驱使我在控制台中获得以下结果。

console

这是html代码段:

<a class = "navbar-brand" href="#/admin" ng-if="isAdmin()"> Administration </a>

Q1:为什么$ http.get()会导致无限数量的$ digest周期。

Q2:为什么它只发生在rootScope而不是任何其他范围。

BTW xhr同步工作正常,我正在使用角1.6.4

0 个答案:

没有答案