FirebaseArray不会更新View

时间:2017-02-28 08:57:42

标签: angularjs firebase firebase-realtime-database angularfire

首先,我想为此制作一个plunkr,但代码是如此复杂,再现这可能需要花费大量的时间。

但我会附上关于这个问题的照片。

问题是:

数据完全来自数据库,它将数据分配给数组,但某种方式视图没有更新。

  1. 我有一个对象数组。所以我使用了firebaseArray。
  2. 这是我的第一个数组

    Array

    1. 我正在检查Console.Log上的数据及其即将发生的变化...... $timeoutsetTimeout无效......

      var ref = firebase.database()。ref(“live”);  var liveData = $ firebaseArray(ref);

    2. 示例更改事件:

                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">
      

1 个答案:

答案 0 :(得分:0)

i是回调函数中的局部变量。尝试liveData[0][v] = changedData

注意:交换iv可能更好。我代表指数,v代表价值。

相关问题