【发布时间】:2016-08-14 18:38:38
【问题描述】:
我花了好几个小时试图理解为什么在 Angular.js 函数之外我没有得到变量的值。首先,我从 Firebase 数据库中获取值,这是我的参考:
var refspaedtServ = new Firebase(FBURLSPA + $routeParams.id);
$scope.spaedServ = $firebaseObject(refspaedtServ);
那么我就有了函数:
///// IMAGE REFERENCE ////
var lafoto = '';
refspaedtServ.on("value", function(rootSnapshot) {
lafoto = rootSnapshot.val().foto;
console.log("Inside image ", lafoto)
});
如您所见,我将变量“lafoto”定义为全局变量 有了console.log里面的图片,我可以看到值是正确的
但是当我尝试在函数之外获取“lafoto”变量的值时,我得到的是“未定义”,我的意思是没有价值。
console.log("Outside Image ", lafoto)
这似乎很愚蠢,但我为此发疯了。 有人可以给我提示吗?
问候, 维克多
【问题讨论】:
-
看起来像经典的异步问题。看看这是否有帮助stackoverflow.com/questions/14220321/…
-
"value"事件是异步的。尝试在函数外记录lafoto变量超时:setTimeout(function(){ console.log(lafoto); }, 1000); -
嗨 Pawel,谢谢你的提示,现在我明白我必须等待回复,如果我使用你在评论中提到的 setTimeout,它可以工作,“在”函数“内部”,控制台.log(lafoto) 显示正确的值,但是如果我尝试在 setTimeout 函数之外使用该值,我再次没有得到该值,只是未定义。也许我做的不对,我想做的是获取firebase集合上“foto”字段的数据值,并在存储引用上设置这个值,如下所示: var starsRef = storageRef.child('fotos /'+ lafoto);
标签: javascript angularjs firebase firebase-realtime-database