当前位置: 首页 > 面试题库 >

元素中的角度ng-repeat条件包装项目(ng-repeat中的组项目)

阮阳曦
2023-03-14
问题内容

我正在尝试使用条件将项目分组为ng-repeat。

一个示例条件是将所有元素分组为同一小时。

数据:

[
    {name: 'AAA', time: '12:05'},
    {name: 'BBB', time: '12:10'},
    {name: 'CCC', time: '13:20'},
    {name: 'DDD', time: '13:30'},
    {name: 'EEE', time: '13:40'},
    ...
]

“时间”字段实际上是一个时间戳记(1399372207),但是使用准确的时间,示例输出将更易于理解。

我正在使用ng-repeat列出这些项目:

<div ng-repeat="r in data| orderBy:sort:direction">
   <p>{{r.name}}</p>
</div>

还尝试了:

<div ng-repeat-start="r in data| orderBy:sort:direction"></div>
    <p>{{r.name}}</p>
<div ng-repeat-end></div>

有效输出为:

<div class="group-class">
    <div><p>AAA</p></div>
    <div><p>BBB</p></div>
</div>
<div class="group-class">
    <div><p>CCC</p></div>
    <div><p>DDD</p></div>
    <div><p>EEE</p></div>
</div>

如果没有针对我的问题的简单解决方案,我的最后选择是将数据分组,然后将其分配给ng-repeat中使用的作用域html" target="_blank">变量。

有什么想法吗?


问题答案:

您可以使用angular.filter模块的groupBy过滤器。
因此您可以执行以下操作:

用法: collection | groupBy:property
使用带点标记的嵌套属性:property.nested_property
JS:

$scope.players = [
  {name: 'Gene', team: 'alpha'},
  {name: 'George', team: 'beta'},
  {name: 'Steve', team: 'gamma'},
  {name: 'Paula', team: 'beta'},
  {name: 'Scruath', team: 'gamma'}
];

HTML:

<ul ng-repeat="(key, value) in players | groupBy: 'team'">
  Group name: {{ key }}
  <li ng-repeat="player in value">
    player: {{ player.name }} 
  </li>
</ul>

结果:
组名:alpha
播放器:Gene
组名:beta
播放器:George
播放器:Paula
组名:gamma
播放器:Steve
*播放器:Scruath

更新: jsbin



 类似资料:
  • 问题内容: 我如何获得Angular的指令以按每个项目的实际值而不是按每个项目的属性值对列表进行排序? 例如: 这是一个玩弄的小提琴:http : //jsbin.com/okatur/1/edit 我意识到我可以在阵列上做,但这是我唯一的选择吗? 问题答案: 从1.3.0-rc.5开始 从AngularJS 1.3.0-rc.5开始 ,如果未提供其他参数,则过滤器(请参阅文档)将使用其项目自动对

  • 问题内容: 我想跳过ng-repeat中的第一项 它不起作用,这里有什么问题吗? 我知道我可以使用ng-if,ng-show来隐藏东西,但是我无法理解为什么在这种情况下过滤器在1.3.x中不起作用。 谢谢。 问题答案:

  • 问题内容: 我正在使用angular.js和(出于参数考虑)引导程序。现在我需要遍历“事物”并将其显示在“行”中: 现在,我该如何用角度关闭每隔三点的div?我从angular-ui尝试过ui-if,但即使这样也没有成功。 如果要使用服务器端渲染,则可以执行以下操作(此处为JSP语法,但没有关系): 请注意,我实际上需要在这里更改DOM,而不仅仅是css隐藏元素。我尝试在和div 上重复,但无济于

  • 我已经开发了应用程序使用离子框架来显示客户当前的市场价格。我有问题在角js条件类与ng-重复循环。当市场发生变化时,我需要显示高(绿色)和低(红色)颜色,如果没有变化,以前的颜色应该为div显示,我使用了下面的代码查看 控制器: CSS 对于每一秒的速率将得到更新,所以若速率变得很高,那个么之前的速率应该应用css类。评分高颜色如果低意味着应用css类。rate highcolor else表示它

  • 问题内容: 是否可以根据条件向标签添加内容?像在此示例中一样,当我只想在第一次迭代中添加时(仅用于的第一个元素)? 问题答案: 是的,在这种情况下,AngularJS具有两个指令: 可以使用ng-show / ng-hide指令族基于评估表达式的结果来隐藏(通过使用显示CSS规则)DOM 3的一部分。 如果我们想有条件地物理删除/添加DOM的一部分,那么ng-switch指令家族(ng-switc

  • 问题内容: 我试图了解over 的意义。角度文档提供了以下示例 但是,使用, 有人可以解释。的意义吗?谢谢。 问题答案: 这两个指令的含义相似:它们重复HTML标记。所不同的只是,在您的帮助下,您可以重复几个标签,从标签开始于,再到完成于。 例如,您有下一个代码: 因此,现在我们可以为这些代码添加2个指令。 与: 与和: 因此,现在您可以看到,在第一种情况下,仅使用指令重复,但是在第二种情况下,您