我有一种情况,我必须放置嵌套的ng-repeat
,当我试图得到$id
的{{1}}时我得到它没有任何问题,但当我试图得到ng-repeat
的{{1}} $id
(下图中标记为红色)i ng-repeat
。
我的got undefined
结构如下
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
,我们将不胜感激任何帮助。
答案 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
语法可让您访问子对象的密钥。