我试图将 Firebase 快照的结果作为数组返回,以便我可以通过它们ng-repeat
(默认情况下它返回对象)最后一行是我尝试设置数组中的对象并将它们设置为要重复的范围。但我似乎对为数组设置值的基本概念感到困惑:/任何帮助都会很棒。
const businessKey = '-KQ1hFH0qrvKSrymmn9d';
const rootRef = firebase.database().ref();
const discoverRef = rootRef.child('discover');
const businessRef = rootRef.child('businesses');
function getDiscoverBarContent(key, cb) {
discoverRef.child(key).on('child_added', snap => {
let businesRef = businessRef.child(snap.key);
businesRef.once('value', cb);
});
}
getDiscoverBarContent(businessKey, snap => {
snap.forEach((child) => {
var item = {};
item._key = snap.val();
array.push(item);
/*$scope.discover = array*/
})
});
最佳答案
尝试angularfire .
Angularfire 是 Firebase 的一个方便的助手,为您提供了一些用于构建 Angular 应用程序的有用工具。它包括3个主要服务。只需在每个 Controller 中注入(inject)您需要的即可。首先确保 firebase 已经初始化:
$firebaseAuth
$firebaseObject
$firebaseArray
以下是如何使用 $firebaseArray
:
const businessKey = '-KQ1hFH0qrvKSrymmn9d';
const rootRef = firebase.database().ref();
const discoverRef = rootRef.child('discover');
const businessRef = rootRef.child('businesses');
function getDiscoverBarContent(key, cb) {
let myArray = $firebaseArray(discoverRef.child(key));
myArray.$loaded().then(() => { cb(a) });
}
getDiscoverBarContent(businessKey, data => {
// ctrl.property = data
// $scope.property = data;
});
如果我有任何语法错误,我很抱歉。我仍然使用经典的 JS 语法,无论它叫什么名字,都没有使用 es5/es6。
AngularFire 文档:https://github.com/firebase/angularfire/blob/master/docs/reference.md
不相关,但如果您需要以 Angular 轻松分页,请省去麻烦并使用以下库:https://github.com/deltaepsilon/firebase-paginator
关于javascript - 将 Firebase 快照作为数组获取并设置为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42257317/