我在从Firebase获得响应后尝试更新范围(我在应用控制器部分中执行此操作),这是一个示例代码。 PS我正在使用AngularFire,Firebase和Angularjs 谢谢
var app = angular.module("sampleApp", ["firebase"]);
firebase.initializeApp(config);
app.factory("mealMacros", ["$firebaseArray",
function($firebaseArray) {
var dbRef = firebase.database();
var userId = sessionStorage.uid;
var ordersRef = firebase.database().ref('user_info/' + userId + '/orders');
return $firebaseArray(ordersRef);
}
]);
app.controller("MealCtrl", ["$scope", "mealMacros",
function($scope, mealMacros) {
// $scope.user = "Guest " + Math.round(Math.random() * 100);
//tried mealMacros.on.. didnt work
ordersRef.on('value', function(snapshot) {
var orders = snapshot.val();
// Loop and parse order ids here
for (var key in orders) {
var orderId = orders[key]['orderType'];
console.log(orderId);
$scope.products = orderId;
//code not reaching here
}
});
}
]);
答案 0 :(得分:0)
ordersRef.on('value', function(snapshot) {
var orders = snapshot.val();
// Loop and parse order ids here
for (var key in orders) {
var orderId = orders[key]['orderType'];
console.log(orderId);
$scope.products = orderId;
//code not reaching here
}
});
首先,您需要确保在var orders
然后$scope.products = orderId;
在循环中设置相同的变量。也许$scope.products
是一个数组,你想在其中推送数据? $scope.products.push(orderId);
最后,在.on事件中设置$scope
变量,您需要在函数返回之前调用$scope.$apply()
。
ordersRef.on('value', function(snapshot) {
var orders = snapshot.val();
console.log(orders); // make sure there's an array here
for (var key in orders) {
var orderId = orders[key]['orderType'];
$scope.products.push(orderId);
}
$scope.$apply();
});
最后一点,var orderId = orders[key]['orderType'];
可能无法正常工作,具体取决于var orders
数组的结构。
如果不起作用,您可以尝试var orderId = key.orderType;
。