如何使用angularjs遍历对象数组

时间:2016-04-14 17:38:13

标签: angularjs ionic-framework

我正在开发一个从firebase加载数据的离子应用程序。在这种情况下,我有一个名为NoteStore的.factory读取firebase中的特定表(例如“lakes”)。

{
  "lake": {   
     "one": {
        "bio": "xxxx",
        "shortname": "xxxx",
        "name": "xxxxx",
        "reknown": "xxxx",
        "image":"xxxxx"
    },
    "two": {
        "bio": "xxxx",
        "shortname": "xxxx",
        "name": "xxxxx",
        "reknown": "xxxx",
        "image":"xxxxx"
    }

  } 
} 

这是从firebase读取的.factory代码:

 //get all lake activites
 getAllLakes: function(){
   return $firebaseArray(ref.child('lake'));
 },

//get individual lake activites
 getLake: function(lakeId){
  return $firebaseObject(ref.child('lake').child(lakeId));
}

我的app Controller然后通过NoteStore获取数据并调用函数“getAllLakes():

app.controller('LakeActivitiesListController', function($scope, NoteStore,              $localStorage) {
$scope.alllakes = NoteStore.getAllLakes();
}

主要问题是我想从firebase中的“lake”表访问单个对象,以便我能够将它们存储在localStorage中。

然后显示如下对象数组: array of objects hidden

当我刚创建一个如下所示的对象并保存到localStorage时,它工作正常,如下图所示。

var myObj = [
{
  name: 'james',
  title:'doctor'

},
{
  name: 'jojo',
  title:'doctor'

}
];
console.log(myObj);


//
window.localStorage['lakes'] = JSON.stringify(myObj);

$scope.data = JSON.parse(window.localStorage.getItem('lakes'));

stored obj in localStorage

this works fine

我正在研究我的大学项目已逾期。请帮忙。我想要的是能够访问包含来自firebase的对象的数组,以便我可以将它们存储在localStorage中。 请。

2 个答案:

答案 0 :(得分:3)

angular.forEach是方法,这是一个例子:

迭代对象数组的示例:

var array_of_objects = [{name: 'Jimi', gender: 'male'},{name: 'Peter', gender: 'male'},{name: 'Bob', gender: 'male'}];

angular.forEach(array_of_objects, function(item, index) {
  console.log(item, index);
});

对象迭代的示例:

var my_object = {name: 'Jimi', gender: 'male', age: '25'};

angular.forEach(my_object, function(value, key) {
  console.log(value, key);
});

在您的情况下,您希望在angular.forEach上创建$scope.alllakes,然后在存储中推送您想要的对象

答案 1 :(得分:-1)

问题是,你有一个对象而不是一个数组。您可以使用

循环遍历对象的不同成员
for(var propertyName in myObject) {
   // propertyName is what you want
   // you can get the value like this: myObject[propertyName]
}