這是category2的firebase結構。Firebase實時數據未在範圍變量中正確添加angularjs
,這是subcategories2。
要顯示我想$ 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請在https://jsfiddle.net/py3ofkyc/上找到jsfiddle如果我們點擊「點擊我」按鈕並查看日誌,所有類別都會先到達,然後是所有子類別。但我想要的是顯示第一類別及其子類別,然後顯示第二類別及其子類別等。 –