angularFire 从嵌套对象中获取 $id
angularFire get $id from nested object
我有一种情况,我必须嵌套 ng-repeat
,当我试图获得第一个 ng-repeat
的 $id
时,我毫无问题地得到了它,但是当我试图获得第二个 ng-repeat
的 $id
(下图中标记为红色) i got undefined
.
我的Firebase
结构如下
这里是 items
对象
HTML代码和控制器在这里
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
秒 ng-repeat
,任何帮助将不胜感激。
您可以使用 (key, value)
语法遍历您的项目:
<div ng-repeat="(id, item) in items">
{{id}}
{{item.userName}}
</div>
发生的事情是 $id
和 $priority
被 angularfire 注入到您发出请求的节点上。它不会将它注入到该节点的所有子节点中,因此您的单个项目没有 $id
属性.
当你调用ng-repeat="item in items"
时,由于items
是一个对象,angular会遍历你的对象的属性,并默默地忽略以$
开头的那些,因为angular 经常在内部使用此前缀。这是 angularfire 利用的副作用(否则,在 item in items
循环中,您将迭代 $id
和 $priority
)。 (key, value) in object
语法使您可以访问子对象的键。
我有一种情况,我必须嵌套 ng-repeat
,当我试图获得第一个 ng-repeat
的 $id
时,我毫无问题地得到了它,但是当我试图获得第二个 ng-repeat
的 $id
(下图中标记为红色) i got undefined
.
我的Firebase
结构如下
这里是 items
对象
HTML代码和控制器在这里
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
秒 ng-repeat
,任何帮助将不胜感激。
您可以使用 (key, value)
语法遍历您的项目:
<div ng-repeat="(id, item) in items">
{{id}}
{{item.userName}}
</div>
发生的事情是 $id
和 $priority
被 angularfire 注入到您发出请求的节点上。它不会将它注入到该节点的所有子节点中,因此您的单个项目没有 $id
属性.
当你调用ng-repeat="item in items"
时,由于items
是一个对象,angular会遍历你的对象的属性,并默默地忽略以$
开头的那些,因为angular 经常在内部使用此前缀。这是 angularfire 利用的副作用(否则,在 item in items
循环中,您将迭代 $id
和 $priority
)。 (key, value) in object
语法使您可以访问子对象的键。