我使用了一个angularjs + firebase示例,并对其中的一个应用程序进行了修改,在该应用程序中,我可以注册一些孩子进行小型越野比赛。根据先前保存的值从firebase中读取记录
我能注册的孩子(参与者)使用的基本结构,种族,地点,俱乐部等:
FIREBASE_URL/races
FIREBASE_URL/clubs
等等。当选择激活比赛时,我保存raceId
和比赛json-object
,并可以将参加者添加到正在进行的比赛中。
例子:
FIREBASE_URL/active_race/-JI6H9VQewd444na_CQY
FIREBASE_URL/active_race/json-object
我希望做的是让所有的参与者,如果有的话,基于raceId
:
FIREBASE_URL/races/-JI6H9VQewd444na_CQY/participants
我尝试以下
'use strict';
app.factory('Race', function ($firebase, FIREBASE_URL, User) {
var ref = new Firebase(FIREBASE_URL + 'races');
var races = $firebase(ref);
var Race = {
all: races,
getParticipantsInRace: function() {
var fb = new Firebase(FIREBASE_URL);
fb.child('active_race/raceId').once('value', function (activeSnap) {
races.$child('/' + activeSnap.val() + '/participants');
});
}
};
return Race;
但我相信我做错了。我试图在races.$child
和fb.child
之前加上return
,但它没有解决我的问题。
我试图硬编码以下json-array
,这显示在网页:
return [{name: 'Claus', born: '1967'}, {name: 'John', born: '1968'}];
我如何获得所有参与者到$scope.participantsInRace
?
我相信我有一个解决方案,但我不确定这样做是否明智。但可能很简单。前面加上$rootScope.participantsInRace =
付诸rootScope:
$rootScope.participantsInRace = races.$child('/' + activeSnap.val() + '/participants');
部分解决。 $ rootScope变量participaInRace已更新,但我必须在另一个浏览器中打开相同页面才能获得相同内容时执行刷新。我相信原因是因为$ rootScope是在我的app.factory控制器中分配的,而不是在app.module中。 – kometen