如何将对象推送到Angularjs中的数组数组

时间:2015-06-23 07:00:43

标签: javascript arrays angularjs

我想创建一个像这样的对象

$scope.allBooks = {
                books:[
                         {
                          name:"",
                          id:""
                         } 
                          {
                          name:"",
                          id:""
                         }
                        // can be add another object
                       ]
                  books:[
                         {
                          name:"",
                          id:""
                         } 
                          {
                          name:"",
                          id:""
                         }
                       ]

             }
事实上,能够为书籍添加更多对象,并为allBooks添加更多书籍。 我的解决方案就是这个

  $scope.allBooks = {};
  $scope.allBooks.books= [];
  var b= {
    name:"",
    id:""
  };
  $scope.allBooks.books.push(b);

我的问题是如何在书籍中添加更多对象,还为allBooks添加更多数组?

2 个答案:

答案 0 :(得分:2)

实际上,您应该重新考虑您尝试创建的allBooks对象的结构,而不是动态添加属性。我理解它的方式是,你有一个属于一起的书籍集合,而这些书籍又属于另一个集合。换句话说,你有一个数组数组。

这会将您的对象变成以下内容:

$scope.allBooks =  [
     { id: 0,
       name: 'Harry Potter Collection',
       books: [{
                 id: 0,
                 name: 'Goblet of Fire',
                 ISBN-13: '1212245'
               },{},...] //here are the books that belong to this collection
     },
     { id: 1,
       name: 'Lord Of The Rings Collection',
       books: [{},...] //LOTR books
 ]

这样您就可以将一系列图书推送到 allBooks 集合。

var newCollection = {
        id:2,
        name: 'AnotherCollection',
        books: []
};

var newBook = {
        id: 1354,
        name: 'Eloquent Javascript 2',
        ISBN-13: 978-1593272821
};

newCollection.books.push(newBook) //push a new book to this collection

$scope.allBooks.push(newCollection);

你的问题有更多的解决方案,但我会选择一系列的收藏品。

答案 1 :(得分:1)

做你已经做过的事情:

$scope.allBooks.books2 = [];
$scope.allBooks.books2.push(b);
$scope.allBooks.books3 = [];
$scope.allBooks.books3.push(b);
相关问题