无法访问$ rootScope变量,尽管它存在

时间:2016-01-20 21:50:44

标签: angularjs angularjs-scope

当我使用AngularJS在Chrome中执行此操作时:

    $urlRouterProvider.otherwise(function($injector, $location){
        var $state = $injector.get("$state");
        var $rootScope = $injector.get("$rootScope");

        console.log($rootScope);
        console.log($rootScope.isAuthenticated);
    }

然后在控制台中我得到了

enter image description here

打开第一行,我看到“isAuthenticated”已设置(false或true)。正如所料。

但是第二行给了我一个undefined。 WTF?

为什么会这样以及如何访问此属性?

1 个答案:

答案 0 :(得分:0)

非常感谢@Macha我得到了答案。

当我在Chrome中展开对象时,我的代码会填充对象。上面的代码在app.config中运行。之后,isAuthenticated将设置在app.run

这意味着这两行都是快照,但是当我展开对象时,Chrome会获取当前内容 - 这解释了两行之间的差异。

你可以通过这样添加debugger;来看到这一点:

console.log($rootScope); debugger;

然后在代码暂停时查看对象。这几乎耗费了我的一些头发。