以 ng-repeat 显示来自 Firebase 的数据

Show data in ng-repeat from Firebase

本文关键字:Firebase 数据 ng-repeat 显示      更新时间:2023-09-26

我有来自 firebase 的 JSON 格式的数据,如下所示:

"events" : [{
"event_score" : [0,1],
"user_scores": {"simplelogin:1" : {"user_score":[0,0]}}, {"simplelogin:2" : {"user_score":[3,0]}}, ...
},
{
"event_score" : [0,1],
"user_scores": {"simplelogin:1" : {"user_score":[0,0]}}, {"simplelogin:2" : {"user_score":[3,0]}}, ...
},
...
]

simplelogin:1 与控制器中的 currentUser.$id 相同:

'use strict';
angular.module('MyApp.controllers').controller('DashboardCtrl', 
  function($scope, $timeout, $firebase, FIREBASE_ROOT, Auth) {
      //get events list from firebase 
      var eventsRef = new Firebase(FIREBASE_ROOT + '/events');
      var usersRef = new Firebase(FIREBASE_ROOT + '/users');
      var currentUserRef = usersRef.child(Auth.currentUser.uid);
      var currentUser = $firebase(currentUserRef);
      $scope.screen_name = currentUser.$id;
      $scope.eventsRef = eventsRef;
      eventsRef.on('value', function(snapshot) {
        $timeout(function() {
          var snapshotVal = snapshot.val();
          $scope.events = snapshotVal;
        });
      });
  });

我尝试像这样在页面上显示它:

<div ng-repeat="e in events">
<p>{{e.match_score}}</p>
<p>{{e.match_userScore.screen_name.user_score}}</p>
</div>
{

{e.match_userScore.screen_name.user_score}} 不要工作。但是我不知道是否可以在{{}}内部将变量从范围注入对象路径?还是有别的办法?

但是我不知道是否可以在{{}}内部将变量从范围注入对象路径?

是的,这是可能的。由于您在 {{}} 之间提供了一个类似 javascript 的表达式,该表达式由 Angular 解析,因此您可以使用括号表示法按存储在变量中的属性名称访问值:

{{e[match_userScore][screen_name].user_score}}