我想尝试访问$ rootScope.newBloodneed,但是我无法在函数外部访问它,我尝试了rootscope,因此可以将其称为全局,但仍然给我未定义的信息
input
答案 0 :(得分:0)
假设$ rootScope正常工作,这是异步性而非范围的问题-当您尝试运行时:
console.log($rootScope.newBloodneeded); //gives me undefined
...getBloodRequest
不一定要完成。您在$rootScope.newBloodneeded
中设置了then
,只有在getBloodRequest
解决之后,控制台才能运行{p> 1。
Bloodrequest.getBloodrequest($routeParams.id).then(function(data) {
...
$rootScope.newBloodneeded = $scope.newBloodneeded;
...
您可以尝试的一项有趣的测试是将控制台日志长时间保存在setTimeout
中(当您保证/确保getBloodRequest
完成时)。那应该向您证明计时是问题,而不是功能范围界定之一。
基本上:
setTimeout(() => console.log($rootScope.newBloodneeded), 10000000000) // or whatever timing guarantees completion
这里的解决方案是也将需要$rootScope.newBloodneeded
的任何逻辑链接到.then
中。如果那不起作用,您可能要创建一个从其他地方访问的Promise。 (这超出了此问题的范围,我们需要更多细节来确定最佳实现)。