首先,我想为此制作一个plunkr,但代码是如此复杂,再现这可能需要花费大量的时间。
但我会附上关于这个问题的照片。
问题是:
数据完全来自数据库,它将数据分配给数组,但某种方式视图没有更新。
这是我的第一个数组
我正在检查Console.Log
上的数据及其即将发生的变化...... $timeout
,setTimeout
无效......
var ref = firebase.database()。ref(“live”); var liveData = $ firebaseArray(ref);
示例更改事件:
ref.child("events").on("child_changed", function(snapshot) {
// CHANGE EVENTS
var changedData = snapshot.val();
angular.forEach(liveData[0], function(i,v) {
if (angular.isObject(i)) {
if (i.id == changedData.id) {
$timeout(function() {
i = changedData;
console.log(i);
console.log("1 event has been changed");
}, 100);
}
}
});
});
我是新手,这是我第一个使用 Firebase& AngularFire 的项目。
也许我做错了什么,也许我做错了但我不知道是什么......
BTW这是服务而不是控制器,我不能/不能使用SCOPE。
这些数据非常复杂,我将向您展示我们的观点,以便您能够更好地理解......
<div ng-repeat="tournament_id in sport.tournaments track by $index"
ng-if="(live.data.tournaments[tournament_id] && live.isCollapsed('sports', sport.id))">
<div class="main-box">
<h4 class="tournament-name" ng-click="live.manageCollapse('tournaments', tournament_id)">
<i class="fa fa-chevron-up {{live.storage.tournaments[tournament_id].style}}"></i>
{{live.data.tournaments[tournament_id].name}} ({{live.data.tournaments[tournament_id].event_count}})
</h4>
<div ng-if="live.isCollapsed('tournaments', tournament_id)">
<table class="table">
答案 0 :(得分:0)
i
是回调函数中的局部变量。尝试liveData[0][v] = changedData
。
注意:交换i
和v
可能更好。我代表指数,v代表价值。