angularFire从嵌套对象获取$ id

时间:2016-04-14 13:35:10

标签: javascript angularjs firebase angularfire

我有一种情况,我必须放置嵌套的ng-repeat,当我试图得到$id的{​​{1}}时我得到它没有任何问题,但当我试图得到ng-repeat的{​​{1}} $id(下图中标记为红色)i ng-repeat

我的got undefined结构如下

enter image description here

这里是Firebase个对象 items object

HTML代码和控制器在这里

items
angular
  .module('starter')
  .controller('feedController', function($scope, $firebaseRef, $firebaseArray) {

    $scope.allRequests = $firebaseArray($firebaseRef.requests);

    $scope.allRequests.$loaded(function() {
      console.log(arguments);
    })

  })

我需要<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <span ng-repeat="items in allRequests"> <!-- this works fine --> {{items.$id}} <div ng-repeat="item in items"> <!-- getting undefined here... --> {{item.$id}} </div> </span>$id,我们将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:7)

您可以使用(key, value)语法来迭代您的项目:

<div ng-repeat="(id, item) in items">
  {{id}}
  {{item.userName}}
</div>

会发生$id$priority在您发出请求的节点上由angularfire注入。它不会在此节点的所有子节点中注入它,因此您的单个项目没有$id属性。

当您致电ng-repeat="item in items"时,由于items是一个对象,angular会迭代您对象的属性,并默默忽略以$开头的那些,因为这个前缀通常由角度内部使用。这是angularfire利用的副作用(否则,在item in items循环中,您将迭代$id$priority)。 (key, value) in object语法可让您访问子对象的密钥。