Angularjs 无法访问工厂中的$rootScope
我在使用angular.js版本1.2.26时遇到了一个奇怪的错误。下面是我的代码,我无法访问在$rootScope中设置的属性。当我登录$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
.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
中取消定义它的原因。