是否可以限制AngularJs中循环中显示的项目数

时间:2014-08-12 11:32:06

标签: angularjs angularjs-ng-repeat

我有一个类别列表和许多属于不同类别的问题。

{
    "id": 5,
    "description": "Does your site have Facebook?",
    "question_category_id": 3
  }

{
    "id": 1,
    "name": "Network",
    "description": "Network"
  }



<table ng-repeat="c in categories">
  <thead>
    <tr>
      <th>{{ c.id }}. {{ c.description }}</th>
    </tr>
  </thead>
  <tbody ng-repeat="q in questions | filter: { question_category_id: c.id } : true">
    <tr>
      <td>{{q.description}}</td>
    </tr>
  </tbody>
</table>

这是显示某个类别下所有问题的代码。

但是我想循环遍历每个类别,并且只使用AngularJs在一个类别下显示1个问题。

有可能吗? 如果是,怎么样?

谢谢。

2 个答案:

答案 0 :(得分:2)

这里有几种可能性,请查看ng-repeat(https://docs.angularjs.org/api/ng/directive/ngRepeat)的文档。例如,如果您只想显示第一个问题,可以在tr-tag上的ng-show中首先检查$。

但请注意,这只是在html中没有显示该类别的其他问题,您仍然从服务器检索到该类别的所有问题,这是浪费资源,因为您只是显示第一个问题。 / p>

答案 1 :(得分:0)

如果你真的想迭代questions,那么你可以使用$index

<tbody 
    ng-repeat="q in questions | filter: { question_category_id: c.id } : true"
    ng-show="$index == 0">

如果没有,但你仍然不想触摸JavaScript部分,那么我会使用

来解决这个问题
<td>
    {{ (questions | filter: { question_category_id: c.id } : true)[0].description }}
</td>