错误“10 $ digest()迭代>达到了”$ state.go在$ scope内。$ watch

时间:2015-10-21 20:35:48

标签: angularjs

如果本地存储因任何原因清除,我会尝试将用户重定向到登录页面。 (示例:也许他们在另一个选项卡中再次打开应用程序并注销)。

我的header指令中有以下代码:

$scope.$watch(
  function (scope) {
    if (!$localStorage.user || !$localStorage.user.hasOwnProperty('basicAuth'))
      $state.go('login');
    $scope.user = $localStorage.user;
    return $localStorage.user;
  }
);

有一个$watch正在观看$localStorage所以我决定把我的逻辑放在那里。

但是,它会导致以下错误:

  

行:16033错误:[$ rootScope:infdig] 10 $ digest()迭代   到达。中止!观察者在最近5次迭代中被解雇:[]   http://errors.angularjs.org/1.4.6/ $ rootScope / infdig P0 = 10安培; P1 =%5B%5D

据我所知,登录页面不会加载header指令。从概念上讲,我没有看到我的逻辑有什么问题,但显然有点不喜欢它。也许我已经走向了登录页面,我说要去那里,即使我已经去了那里。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我刚刚从$state.go删除$scope.$watch并重新编写逻辑以在其他位置完成相同的操作。

我想我躲过了一颗子弹,因为我能够做到这一点。这不是我认为适合所有情况的直接解决方案。