我是 Angular JS 新手,
我正在将元素推送到数组中,然后想使用 ng-repeat 在 html 中显示。
$scope.groupedMedia = [];
//Adding elements through a for loop.
$scope.groupedMedia[year].push(response.resources[i]);
console.log($scope.groupedMedia);
//The above console displays the following,
//[2014_January: Array[5], 2013_December: Array[95]]
所以在我的 HTML 中,
<div ng-repeat="group in groupedMedia">
<div ng-repeat="file in group">
<p>{{file.lastModified}}</p>
</div></div>
我观察到 html 中的 groupedMedia 数组是空的,因此不显示任何数据。
我还需要以与推送数组相同的顺序显示数组中的项目。
任何解决此问题的提示都会非常有帮助。
理想情况下,groupedMedia obj 必须重组为年份映射(年份作为键,资源作为值)。不建议并且必须避免使用数组作为随机数
示例 JS:
$scope.groupedMedia = {};
$scope.groupedMedia[year] = response.resources[i];
console.log($scope.groupedMedia); //This will provide an output like below.
//{'2014_January': Array[5], '2013_December': Array[95]}
在 HTML 中,
第一次迭代将通过 groupMedia 地图进行。使用 ng-repeat,我们可以迭代映射并在子列表中引用映射的键/值对。
第二个是资源数组。
HTML 代码示例:
<div ng-repeat="(group, files) in groupedMedia">
<div ng-repeat="file in files">
<p>{{file.name + ': '+ file.lastModified}}</p>
</div>
</div>
找到了维持地图顺序的方法,
- 首先迭代键数组(
Object.keys(map)
).
- 然后使用键可以获取值。
JS补充:
$scope.groupKeys = function(data){
return Object.keys(data);
}
HTML 添加:
<div ng-repeat="key in groupKeys(groupedMedia)">
{{key}}
<div ng-repeat="file in groupedMedia[key]">
<p>{{file.name + ': '+ file.lastModified}}</p>
</div>
</div>
我已经更新了 plunker 以反映相同的情况。不过我真的很想知道是否有其他方法。
示例演示:http://plnkr.co/edit/JfqIoZMQmFz2cwFvce2K?p=preview http://plnkr.co/edit/JfqIoZMQmFz2cwFvce2K?p=preview上面的 plunker 有一个包含上述代码的演示。看一下,如果有帮助请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)