在我项目的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服务驱使我在控制台中获得以下结果。
这是html代码段:
<a class = "navbar-brand" href="#/admin" ng-if="isAdmin()"> Administration </a>
Q1:为什么$ http.get()会导致无限数量的$ digest周期。
Q2:为什么它只发生在rootScope而不是任何其他范围。
BTW xhr同步工作正常,我正在使用角1.6.4