Array of Arrays with ng-repeat

依然范特西╮ 提交于 2019-12-12 20:01:58

问题


I am trying to show a list grouped by date but the list isn't sorted and I don't know when the date change. It's like I have this Json :

list = 
{name: first, date: 2014-05-21}, {
{name: second, date: 2014-05-20}, {
{name: third, date: 2014-05-21}

I'd like to make the following html :

<li><h3>2014-05-21</h3>
 <ul>
  <li>first</li>
  <li>third</li>
 </ul>
</li>
<li><h3>2014-05-20</h3>
 <ul>
 <li>second</li>
 </ul>
</li>

Do you have an idea ?

I tried to make an Array of arrays with two ng-repeat like this :

for (i in list){
 if ($scope.listToShow[list.date] == undefined) {
     $scope.listToShow[list.date] = newArray();
 }
 $scope.listToShow[list.date].push(list[i]); 
}

But I don't success to show this.


回答1:


Check the post, it exactly mention what you want to achieve.

http://www.bennadel.com/blog/2456-grouping-nested-ngrepeat-lists-in-angularjs.htm

OR

You can also use ng-repeat-start and ng-repeat-end (inbuilt directives) to achieve the same. Click here for Reference link.




回答2:


I achieved a working example. Is not very sophisticated and could be improved, but you get the basic idea by looking at the code. The trick is to group your data (no fancy angular feature, just plain old javascript) and then display the grouped data in the view. I had to mantain a keys property for the grouped object because apparently angularjs views dont' support Object.keys(obj).

See it here

EDIT: updated with the (key,obj) in grouped construct, no more need for keys array.




回答3:


I was testing a bit with a array of arrays inside a table. It's not the cleanest one.

//controller
$scope.list = [
    [
        {name: 'first', date: '2014-05-21'},
        {name: 'lala', date: '2014-07-32'},
        {name: 'fada', date: '2014-07-32'}
    ], 
    [
        {name: 'second', date: '2014-05-20'},
        {name: 'dada', date: '2014-54-32'},
        {name: 'mama', date: '2014-07-32'}
    ], 
    [
        {name: 'third', date: '2014-05-21'},
        {name: 'nana', date: '2014-78-32'},
        {name: 'rara', date: '2014-07-32'}
    ]
];

//view
<table>
    <tr class="parent" ng-repeat-start="(key, item) in list">
        <td>{{ item[0].name }}</td>
        <td>{{ item[0].date }}</td>
    </tr>
    <tr class="child" ng-repeat-end="", ng-repeat="part in list[key].slice(1, list[key].length)">
        <td>{{ part.name }}</td>
         <td>{{ part.date }}</td>
    </tr>
</table>


来源:https://stackoverflow.com/questions/23801879/array-of-arrays-with-ng-repeat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!