【发布时间】:2016-08-16 06:15:49
【问题描述】:
这是 category2 的 firebase 结构。
这是针对子类别 2。
要在屏幕上显示数据,我希望 $scope.Categories [] 以这种格式填写。
[{
"id": "1",
"display_with": "7",
"image": "/images/salt_sugar.png",
"name": "Salt & Sugar",
"subcategories": [{
"scid": "1",
"scname": "Sugar Products"
},
{
"scid": "5",
"scname": "Tea"
}
]
},
.
.
.
.
]
填充$scope.Categories []的逻辑。
$scope.Categories = [];
var categoriesRef = firebase.database().ref('categories2');
categoriesRef.on('value', function(snapshot) {
$scope.Categories = [];
var recvCategories = [];
recvCategories = snapshot.val();
for (var j=0; j<recvCategories.length; ++j){
var category = recvCategories[j];
//alert (category);
if (category != undefined){
var category_modified = {};
category_modified.id = category.id;
category_modified.display_with = category.display_with;
category_modified.name = category.name;
category_modified.image = category.image;
var subcategories = [];
for(var key in category.subcategories) {
var subcategoriesRef = firebase.database().ref('subcategories2/' + key);
subcategoriesRef.on('value', function(snapshot2) {
subcategories.push(snapshot2.val());
});
}
category_modified.subcategories = subcategories;
$scope.Categories.push(category_modified);
}
}
$scope.$apply();
});
一旦数据可用,就想在屏幕上显示它。所以我正在使用 $scope.$apply();
问题是数据显示不正确。但是一旦我转到其他控制器并返回到同一个控制器,一切都会按预期显示。
为什么子类别信息在 $scope.Categories[] 中没有正确添加
【问题讨论】:
-
你能设置一个重现最小问题的jsfiddle/jsbin吗?
-
@FrankvanPuffelen 请在jsfiddle.net/py3ofkyc 找到 jsfiddle 如果我们点击“点击我”按钮并查看日志,所有类别都排在第一位,然后是所有子类别。但我想要的是显示第一个类别及其子类别,然后显示第二个类别及其子类别,依此类推..
标签: angularjs firebase firebase-realtime-database