我使用了一個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