迭代和修改Firebase数组会导致未定义
Iterating and modifying Firebase array causes undefined
EDIT:似乎值[i].extrainfoimage仅在imageRef.child("-JlSvEAw…
到目前为止,我已经阅读了两次文档,但仍然无法理解这一点。
基本上,我从firebase加载一些数据,并将其设置为数组。我遍历该数组,并打算在迭代时用从Firebase DB中其他位置获得的数据替换一些属性。然而,每次我去更换属性时,我都会得到
"未捕获的类型错误:无法设置未定义"的属性"extrainfoimage"
这是我的代码:
var questionsRef = new Firebase("https://XX.firebaseio.com/Questions");
var imageRef = new Firebase("https://XX.firebaseio.com/Images");
//get the first 6 items
var query = questionsRef.orderByChild('date_time_asked').limitToFirst(6);
//get them as a firebase array promise
$scope.questions = $firebaseArray(query);
//wait for it to load
$scope.questions.$loaded().then(function (value) {
//iterate through
for (i = 0; i < value.length; i++) {
//check if there is data to be replaced
if (value[i].extrainfoimage) {
//if there is fetch it from firebase and replace
imageRef.child("-JlSvEAwu5-WZJkOE_b/image").once("value",function(data){
value[i].extrainfoimage = data.val();
});
}
}
})
可能是因为值中的最后一项没有extrainfoimage
。因为value[i].extrainfoimage
的集合是异步的,所以它不会捕获正确的i
值,因此在执行时会失败。
尝试将其封装在IIFE:中
for (i = 0; i < value.length; i++) {
//check if there is data to be replaced
if (value[i].extrainfoimage) {
(function(curr) {
//if there is fetch it from firebase and replace
imageRef.child("-JlSvEAwu5-WZJkOE_b/image").once("value",function(data){
value[curr].extrainfoimage = data.val();
});
})(i);
}
}
相关文章:
- JSON解析未从数组中获取值
- Join架构验证:Join.object定义数组中的有效键
- 值未与数组对象绑定
- 在定义数组后填充数组
- 带有自定义数组的迷你图
- 函数中的Javascript未定义数组
- Meteor会话变量未存储数组
- 如何在Angular中设置异步HTTP服务的回调,以便在不定义数组的情况下在控制器中填充数组
- Javascript-自定义数组不起作用
- 为什么不能映射“未定义”数组
- JSON 多维数组未显示(“数组未定义”)
- 确定猫鼬中空数组和未定义数组之间的区别
- 未定义数组值
- 未捕获的类型错误:无法读取属性'长度'的未定义(数组)
- forEach()创建未定义数组(Javascript)
- Javascript console.log未读取数组未定义
- Jquery回调未定义数组
- Javascript拆分未定义数组
- 对array构造函数创建的未定义数组执行forEach操作
- 禁止未定义数组属性的javascript错误