Javascript $rootScope:infdig已达到10$digest()迭代次数。流产
我正在使用UI路由器,并检查每个状态开始改变的现有令牌。 此错误仅在第一次加载页面时发生。如果我刷新页面,它就会消失 这是我的根范围,我认为是错误:Javascript $rootScope:infdig已达到10$digest()迭代次数。流产,javascript,angularjs,Javascript,Angularjs,我正在使用UI路由器,并检查每个状态开始改变的现有令牌。 此错误仅在第一次加载页面时发生。如果我刷新页面,它就会消失 这是我的根范围,我认为是错误: .run(['$rootScope', '$location', '$state', '$http', '$window', 'APIROOT', function ($rootScope, $location, $state, $http, $window, APIROOT) { $rootScope.$on('$stateChange
.run(['$rootScope', '$location', '$state', '$http', '$window', 'APIROOT', function ($rootScope, $location, $state, $http, $window, APIROOT) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
var isLogin = toState.name === "login";
if (isLogin) {
return;
}
var userInfo = $window.sessionStorage.token;
if (!userInfo) {
event.preventDefault();
$state.go('login');
} else {
$http.get(APIROOT + 'check_token').then(function(resp){
return true;
}).then(function(err){
})
}
});
}]);
我的控制器:
angular.module('app')
.controller('AppCtrl', ['$http', '$scope', '$window', 'APIROOT', AppCtrl]);
function AppCtrl($http, $scope, $window, APIROOT) {
var date = new Date();
var year = date.getFullYear();
$scope.main = {
name: $window.sessionStorage.getItem('name'),
brand: 'Brand',
year: year
};
}
我找到的第一个解决方案是将$stateChangeStart更改为$stateChangeSuccess,但我希望在成功更改之前进行检查
我应该修复什么?我意识到我的AppCtrl调用$window.sessionStorage.getItem'name'未定义 所以我修改它:
angular.module('app')
.controller('AppCtrl', ['$http', '$scope', '$window', 'APIROOT', AppCtrl]);
function AppCtrl($http, $scope, $window, APIROOT) {
var date = new Date();
var year = date.getFullYear();
if ($window.sessionStorage.getItem('name')) {
var name = $window.sessionStorage.getItem('name');
} else {
var name = "";
}
$scope.main = {
name: name
brand: 'Brand',
year: year
};
}
我想这不是问题,更新你的控制器代码谢谢你让我意识到我的appctrl调用会话是未定义的。