gpt4 book ai didi

angularjs - 如何遍历 Firebase 实例的子项

转载 作者:行者123 更新时间:2023-12-04 07:26:28 25 4
gpt4 key购买 nike

我想知道如何遍历 everyone 的 child .我正在使用 Firebase 和 AngularJS。

我的 firebase 对象看起来像:

Firebase Objects

对我来说它看起来像一本字典,所以来自 Getting a list of associative array keys我试过了

syncData('everyone').$bind($scope, 'everyone').then(function() {
var keys = $scope.everyone.$getIndex();
for (var key in $scope.everyone) {
console.log("key : " + key + " value : " + $scope.everyone[key]);
}
});

日志确实包含子对象,但也包含所有方法。像这样
... Before this line is all the other methods.
key : $on value : function (a,c){if("loaded"==a&&b._loaded)return b._timeout(function(){c()}),void 0;if(!b._on.hasOwnProperty(a))throw new Error("Invalid event type "+a+" specified");b._on[a].push(c)} controllers.js:58
key : $off value : function (a,c){if(b._on.hasOwnProperty(a))if(c){var d=b._on[a].indexOf(c);-1!==d&&b._on[a].splice(d,1)}else b._on[a]=[];else b._fRef.off()} controllers.js:58
key : $auth value : function (a){var c=b._q.defer();return b._fRef.auth(a,function(a,b){null!==a?c.reject(a):c.resolve(b)},function(a){c.reject(a)}),c.promise} controllers.js:58
key : $getIndex value : function (){return angular.copy(b._index)} controllers.js:58
key : -JH45WOOAtnZfUZkrJb1 value : [object Object] controllers.js:58
key : -JH45YdfwptGv3y6UqyV value : [object Object] controllers.js:58
key : -JH45_zxptV_dmibyGzL value : [object Object]

有没有办法只得到 child ?

我这样做是因为我的代码旨在使用数组,但 Firebase 不鼓励使用数组(对于多个人可以更改的值)。所以我试图遍历 firebase 字典并将对象复制到客户端的数组中。所以我不必更改太多代码。

最佳答案

更新:从 AngularFire 0.8.x 开始,可以使用 $asArray() 获取记录的排序数组,不再需要此答案

在 angularFire 对象中迭代值的正确方法是使用 $getIndex()。你在上面的代码中有这个,但没有在 for 循环中使用它。

由于您已经在使用 angularFire lib (syncData 是使用 angularFire 的 angularFire-seed 服务),无需担心调用 $apply() 或任何其他将数据诱骗到 Angular 的复杂性,详见上一个答案(这是对原始数据的良好响应) Firebase/Angular 实现)。

相反,只需更改您的 for 循环以迭代键而不是 angularFire 实例:

syncData('everyone').$bind($scope, 'everyone').then(function() {
var keys = $scope.everyone.$getIndex();

// utilizing Angular's helpers
angular.forEach(keys, function(key) {
console.log(key, $scope.everyone[key]);
});

// or as a for loop
for(var i=0, len = keys.length; i < len; i++) {
console.log(keys[i], $scope.everyone[keys[i]]);
}
});

要使用 DOM 中的对象,请使用 ng-repeat :
<ul>
<li ng-repeat="(key,user) in everyone">{{key}}, {{user|json}}</li>
</ul>

关于angularjs - 如何遍历 Firebase 实例的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com