【发布时间】:2018-02-26 20:13:16
【问题描述】:
下面是我用来将我的 firebase 数据库中的选定玩家带到我的范围的代码:
var orderedPlayers = databaseService.players.orderByChild("id");
$firebaseArray(orderedPlayers)
.$loaded(function(loadedPlayers) {
var normalizedPlayers = loadedPlayers.reduce(function(acc, next) { acc[next.id] = next; return acc; }, {});
var selectedPlayers = $scope.pick.map(function(num){
return normalizedPlayers[num];
});
$scope.players = selectedPlayers;
$scope.sum =function(items, prop){
return items.reduce (function(a, b) {
return a + b [prop];
}, 0);
};
$scope.totalPoints = $scope.sum($scope.players, 'goals');
}, function(err) {
console.log(err);
$scope.players = [];
});
问题是,当我从 firebase 数据库更改目标数量时,总点数没有实时变化。即$scope.players = selectedPlayers;实时更新,但$scope.totalPoints only在刷新页面后更新。
是否也可以实时更新后者?
【问题讨论】:
-
显示你的 html 模板代码。
-
显示更多代码或创建一个小提琴来重现您的问题。
-
您发布的代码 sn-p 是单个方法的一部分,还是只是 $onInit() 的整个代码块?如果上面的代码在一个方法中,并且从某个地方调用,它可能会显示错误发生的原因(例如 $firebaseArray 仅在调用该方法时被调用)。
-
你能用 $scope.sum 方法更新你的问题,以便我可以帮助你。
-
@MuruGan 谢谢
标签: javascript angularjs firebase web-applications firebase-realtime-database