使用 firebase 更新 $scope
Updating $scope with firebase
我在收到 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
}
});
}
]);
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
变量,您需要在函数 returns.
之前调用 $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;
。
我在收到 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
}
});
}
]);
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
变量,您需要在函数 returns.
$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;
。