Angularjs 无法访问工厂中的$rootScope

Angularjs 无法访问工厂中的$rootScope,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我在使用angular.js版本1.2.26时遇到了一个奇怪的错误。下面是我的代码,我无法访问在$rootScope中设置的属性。当我登录$rootScope时,我可以看到这些属性。但我无法访问这些属性 angular .module('ids.factories', []) .factory('StoreFactory', ['$rootScope', function ($rootScope) { console.log($rootScope);//This is defin

我在使用angular.js版本1.2.26时遇到了一个奇怪的错误。下面是我的代码,我无法访问在$rootScope中设置的属性。当我登录$rootScope时,我可以看到这些属性。但我无法访问这些属性

angular
  .module('ids.factories', [])
  .factory('StoreFactory', ['$rootScope', function ($rootScope) {
    console.log($rootScope);//This is defined and i can see the store property
    console.log($rootScope.store);//This seems to be undefined
    return {
      get: function (key, callback) {
        return $rootScope.store.get(key, callback)
      },
      save: function (key, data, callback) {
        $rootScope.store.save({
          key: key,
          value: data
        }, callback);
      },
      remove: function (key) {
        $rootScope.store.remove({key: key});
      }
    }
  }]);

此错误取决于浏览器的开发人员工具的工作方式。正如tasseKATT在他的文章中所说,在初始化变量之前调用了console.log()。稍后在控制台中,您将只看到一个带有已计算代码的引用。开发人员工具通过console.log条目旁边的一个蓝色小符号向您提供提示。(你也可以在截图中看到)
你好

您可以设置plunk来重现错误吗?
console.log($rootScope.store)//这似乎是未定义的
在初始化
存储
变量之前运行,不是吗?
控制台。log($rootScope)
将打印对
$rootScope
的引用,这就是为什么您可以看到
存储
属性的原因。这并不意味着
存储
属性在实际执行
控制台.log
时可用,这就是为什么可以在第二个
控制台.log
中取消定义它的原因。