【发布时间】:2015-06-05 18:09:34
【问题描述】:
基本上我有一个从中提取数据的数组。我想向其中添加一个新数组,以便提取更多数据。
var myArray.libraries = []
通过这样的 for 循环获取添加的项目:
for(var x=0; x < items.length; x++){
myArray.libraries ({ name: items(x).name, state: items(x).state});
}
效果很好,我可以从myArray.libraries .name 得到我需要的东西。我需要添加诸如“书籍”之类的内容,以便每个条目都可以拥有它的书籍列表。可能有 1 本书或更多本书。
要清楚我正在使用角度,所以我使用类似这样的东西来为每个库输出:
<div ng-repeat="library in libraries">
<p>{{library.name}}</p>
</div>
我只需要添加books,这样我就可以循环浏览该图书馆中的每一本书:
<div ng-repeat="book in libraries.books">
<p>{{book.name}}</p>
</div>
我尝试使用myArray.libraries.books = [],但这并没有将收集添加到每个库中。我也尝试了myArray.libraries.push({ books: { } }),但这没有任何影响,并给了我一个错误,我无法推送到myArray.libraries.books,因为书籍不存在。
编辑
这里有一些示例代码。我用的是angular,但原理应该是一样的:
$scope.libraries= [];
//start loop to get the installations
for (var x = 0; x < res.rows.length; x++) {
$scope.libraries.push({ ... , books: []});
//run a new query to get the additional libraries info
var booksQuery = query to get books;
//run query to get results and loop through them
for (var i = 0;i < res2.rows.length; i++) {
$scope.libraries[x].books.push({ name: res2.rows.item(i).prodName });
}
});
}
编辑
我进行了一些测试,结果发现当我进行第二次数据库调用时,它不知道原来的 $scope 存在。
【问题讨论】:
-
你的数组应该在 $scope 内
-
我不确定我明白了,你有一个数组,但是你把它当作一个对象来添加命名键,所以它不再是一个数组。循环似乎没有做任何事情,它只是在每次迭代时覆盖相同的属性,现在你想向数组添加另一个命名键,它不再是一个真正的数组了?
-
@Fals - 是的,我只是在简化它
标签: javascript arrays angularjs