【发布时间】:2014-05-19 21:01:09
【问题描述】:
我拿了一个 angularjs + 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 变量参与者InRace 已更新,但当我在另一个浏览器中打开相同页面以获得相同内容时,我必须执行刷新。我相信原因是因为 $rootScope 是在我的 app.factory-controller 中分配的,而不是在 app.module 中。