在 AngularJS ng-repeat 中对集合进行分组?

2023-12-05

我有一个非常简单的场景,其中有一组记录可用,我需要以简单的 ng-repeat 方式显示它们。但是,我需要按属性对记录进行分组,并且我的目标不是不必更改集合即可完成此分组。我的想法是可以应用某种类型的过滤器,但在实践中过滤器,很好地过滤数据,而不是分组。有没有一种方法可以收集并简单地分组并重复?

真正的 hack-ish jsFiddle 就在这里,我正在尝试做的事情。

http://jsfiddle.net/bryangrimes/RufQh/5/

简而言之,这个想法是这样的:

<ul>
      <li ng-repeat="log in logs grouped by log.dept">
        <h4>{{log.dept}}</h4>
        {{log.name}} worked {{log.hours}} this week
      </li>            
  </ul>

更新: 所以最后我们已经使用 taffyDB 来存储原始数据集,所以它只是进行了扩展。

$.each($scope.logs, function() {
        var log = $(this)[0];

        // build angular friendly data structure
        log.workLogsDB = TAFFY(log.worklogs);
        log.deptLogs   = [];

        $.each(log.workLogsDB().distinct('department').sort(), function() {
            var dept  = $(this)[0].toString();
            var cost  = log.workLogsDB({department:dept}).sum('cost');
            var hours = log.workLogsDB({department:dept}).sum('hours');
            var items = log.workLogsDB({department:dept}).get();

            log.deptLogs.push({
                department: dept,
                total_cost: cost,
                total_hours: hours,
                line_items: items
            });
        });
    });

以及要呈现的 HTML:

<div ng-repeat="log in logs">
                <h3 onclick="$('#{{log.project}}').slideDown()">    
                    {{log.project}} hours:{{log.hours}} cost: ${{log.cost}}
                </h3>
                <ul id="{{log.project}}" style="display: none;">
                    <div ng-repeat="log in log.deptLogs">
                        <span style="font-weight: bold; text-transform: capitalize;">{{ log.department }} - Team Cost: ${{ log.total_cost }}, Team Hours: {{ log.total_hours }} </span>
                        <li ng-repeat="line in log.line_items">
                            {{line.employee}} {{line.hours}} hours
                        </li>
                        <br>
                    </div>
                </ul>
            </div>

我认为您需要创建该集合的排序副本,然后对该排序的集合进行 ng-repeat 。这是a fiddle不久前,当别人问过类似的问题时,我写了一篇文章。要点:

function MyCtrl($scope, orderByFilter) {  // inject orderByFilter
   $scope.sortedLogs = orderByFilter($scope.logs, '+dept');
}

HTML:

<ul>
  <li ng-repeat="log in sortedLogs">
      <ng-switch on="$first || log.dept != sortedLogs[$index-1].dept">
          <div ng-switch-when="true" class="group"><h4>{{log.dept}}</h4>
      </ng-switch>
      {{log.name}} worked {{log.hours}} this week
  </li>
</ul>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 AngularJS ng-repeat 中对集合进行分组? 的相关文章

  • 如何在 Angular JS 应用程序中使用 ckeditor? [复制]

    这个问题在这里已经有答案了 我是 angularJS 新手 我需要在我的应用程序中使用 ckeditor 作为文本区域 在我在 Angular 应用程序上尝试之前 我已经完成了一个 仅 html 网页 我已经生成了我的 ckeditor 包
  • Angularjs - ng-click 函数与指令

    我无法决定在以下情况下使用哪种方法 我试图在点击按钮时发出警报 我可以使用两种方法来做到这一点 哪个是最佳实践 请告诉我为什么 Method 1 div div
  • 如果满足条件,Angular JS 如何添加 CSS 类

    我正在创建一个截断指令 如果字符超过 10 我就会截断文本字符串 然后它将显示 我的目标是编写一个条件 如果字符少于 10 个 则删除 如果有人对我如何实现此目标有任何想法 我会坚持这一点并接受建议 这是我的代码 var app angul
  • 带有量角器端到端测试的 Electron 应用程序

    我目前正在研究一个Electron http electron atom io 应用程序 我现在想将端到端测试与量角器 https angular github io protractor 我已经查看了 Protractor 的教程 现在正
  • 有没有办法用异步数据更新过滤器

    我已经构建了下一个角度过滤器 App filter cur2symbol CurrenciesService function CurrenciesService return function input iso input input
  • 如何在 AngularJS/Bootstrap3 中禁用基于复选框的内容

    我正在创建一个表单 用户可以在其中配置重复事件 因此有大量控件 顶部是一个用于启用 禁用计划的复选框 如何禁用但不隐藏基于复选框的整个部分 如果选中 用户应该能够对时间表进行修改 如果没有检查 则不允许进行任何更改 我相当确定我可以在每个控
  • 角度 ui-grid 自定义标题 html

    我正在尝试将 glyphicon glyphicon thlist 我可以单击并调用控制器函数 添加到默认标题的左侧 我采用了默认标头并尝试操纵它来执行此操作 默认标头位于 https raw githubusercontent com a
  • AngularJs:当放置在 ng-view 标签内时,ng-include 不起作用

    我正在通过 ng view 内的角度路线加载 html 页面 我正在加载的页面包含一个 ng include 标签 指向 另一个 html 文件 我尝试了以下所有语法 div src div div div div src include
  • 如何使用 Angular 1.5 中的组件为每个页面设置标题

    我最近开始使用 Angular 1 5 组件 我的应用程序中有多个页面 所以我决定创建一个
  • 使用 ng-if 内容短暂呈现然后消失

    我的页面上有一些内容包含在 ng if 中 如下所示 div class text danger p strong Message displayed to User strong p div 然后在我的 Angular js 控制器中我有
  • 如何访问 Angularjs 模板中的常量

    如何将公共js文件中定义的常量访问到不同模块的模板中 如果我在 MainModule js 中定义了一个这样的常量 该常量包含在主 html 文件的开头 gt var myApp angular module AC gt myApp con
  • AngularJS limitTo 按最后 2 条记录

    可以结合AngularJS吗filter https docs angularjs org api ng filter filter order https docs angularjs org api ng filter orderBy
  • Protractor addMockModule 附加参数不起作用?

    这看起来非常非常简单 但我不明白为什么这个简单的代码不起作用 我正在添加一个模拟模块来在 Angular E2E 测试中模拟我的 API 后端 我正在使用量角器 1 6 0 我需要将附加参数传递给模拟模块 根据 Protractor 文档
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • ui-sref 和变量状态参数名称

    我想呈现一个链接 例如 a 其中州名myState和钥匙myKey是变量 有办法做到这一点吗 我发现自己处于同样的情况 我也无法完成这一点 尝试使用 ng click 移动代码 并在 ng click 函数内部使用 stage go htt
  • Angular JS - 使服务可以从控制器和视图全局访问

    假设我们有以下服务 myApp factory FooService function 然后 从控制器中 我会说 myApp controller FooCtrl scope FooService function scope FooSer
  • 动态分配 ng-model

    我正在尝试从对象数组生成一组复选框 我的目标是让复选框动态地将其 ng model 映射到将提交到数组中的新对象的属性 我的想法是这样的 li li
  • Angularjs 循环遍历 $http.post

    当我循环遍历 Angularjs 的 http post 服务时 for var i 0 i lt scope tagStyles length i scope profilTag tag scope tagStyles i id tag
  • 在 Angular 中加载脚本和资源时实现加载器动画的最佳方法是什么?

    我希望向我的 Web 应用程序的用户显示一个进度条 指示加载所需文件和脚本的当前进度 最好显示百分比 但简单的加载器 gif 是一个可以接受的解决方案 如果可能的话 实现一个可以显示 Angular 中图像 CSS 和 JS 加载完成百分比
  • 地址更改时如何停止 Angular 重新加载

    我正在使用 Angular 的scrollTo and anchorScroll像这样 app controller TestCtrl function scope location anchorScroll scope scrollTo

随机推荐

  • 如何使用 fprintf 将数据写入文件

    我想将 C 程序中的数据写入文件 以便 Excel 可以读取该文件以绘制数据图表 但我不确定 fprintf 使用的确切语法 我在程序的最顶部声明 了 stdlib h 我声明了 文件 fp 在 main 中 但我发现 File 和 fp
  • 我们如何制作xkcd风格的图表?

    显然 人们已经找到了如何制作xkcd风格图在数学中 and in LaTeX 我们可以用 R 来做吗 Ggplot2 ers geom xkcd 和 或 theme xkcd 我猜在基本图形中 par xkcd TRUE 我该怎么做 作为
  • 用于获取特定已安装软件及其版本的批处理文件

    我有一个脚本可以查找特定已安装的软件 但我在获取该软件的版本时也遇到了麻烦 例如 假设我正在获取所有已安装的 Microsoft 软件的列表 到目前为止 这是我所拥有的 echo software installed gt software
  • 字符看起来像 ASCII 63 但不是,所以我无法删除它

    我正在从文本文件中读取文本 文本文件必须读取的第一个字符串是 Algood 并记下空格 在记事本中 该字符串中似乎有空格 但事实并非如此 当我在 Visual Studio 的 QuickWatch 中测试第 6 个 从零开始的索引 字符时
  • 在新容器 docker 构建期间访问正在运行的容器

    如何在新容器docker构建期间访问正在运行的容器 应用容器构建过程中需要访问数据库容器 docker 撰写 version 3 services db build db ports 1433 1433 networks mynetwork
  • redis 中的嵌套哈希

    我想使用哈希的哈希 嵌套哈希 例如 Key 1 gt Subkey 1 gt Value1 Value2 Subkey 2 gt Value1 Value2 Subkey n gt Value1 Value2 Key 2 gt Key n
  • Android Lint:如何抑制与支持库相关的所有警告?

    我正在尝试使用 Android Lint 来保持代码顺利运行 但由于我使用的是 support v7 appcompat Lint 返回了一个巨大的 溢出的警告列表 如何抑制所有这些问题 以便我只能看到我自己的应用程序的问题 在 Lint
  • 为什么在 Swift 中,dispatch_queue_create 会给出 EXC_BAD_ACCESS 错误?

    我正在将一些使用 Grand Central Dispatch 的代码从 C 移植到 Swift 并且发现了一个奇怪的错误 dispatch queue create 似乎根本不起作用 例如 在我的 C 基类标头中 我会声明 dispatc
  • Date.getDay() javascript 返回错误的日期

    我有这样的javascript代码 alert DATE value var d new Date DATE value var year d getFullYear var month d getMonth var day d getDa
  • jQuery:.click() 和 .on("click") 之间的区别

    我通常使用 selector click 但有些人建议我改用这个 selector on click function Or selector live click 已弃用 我读了说明书 但我初学者的头脑无法理解 我对他们使用的所有术语感到
  • 微电网电池调度的约束优化

    给定电力消耗 太阳能电池板发电 价格等输入 全部在给定时间 t 我们有一个电池 我们想要评估它在任何给定时间应该 放电 充电多少 该问题可以表述如下 Pt price of electricity at time t Lt consumpt
  • 多次调用 imageWithData:UIImageJPEGRepresentation() 仅第一次压缩图像

    为了防止我的应用程序出现滞后 我尝试压缩大于 1 MB 的图像 主要是从 iPhone 的普通相机拍摄的照片 UIImage image info objectForKey UIImagePickerControllerOriginalIm
  • 使用 swift 获取 HTTP 状态

    很抱歉 我还没有找到我的问题的答案 请不要太严厉 我不是专业程序员 但我不断学习 希望一旦我能够回答别人的问题 我正在尝试获取链接的 HTTP 状态 我根据一个数据库条目代码生成链接 例如 ABCDEF 我将它们保存在一个数组中 然后生成指
  • 什么布局管理器会执行此操作?

    OY 没有足够的代表点来发布图像 joes pizza pizza type toppings cheese mushrooms 15 00 veggie extra cheese p
  • Rollup、Vue 和 Buble、scss 文件中出现意外标记

    我正在尝试使用 Vue 和 Buble 按照 Vue 官方页面中提供的示例 使用 rollup 来编译 SFC 但我不断收到此错误 src wrapper js dist chat min js plugin buble SyntaxErr
  • 在 WPF 中缓慢平移和缩放

    我在 WPF 的几块画布上绘制了大量的线条和文本 我在 WPF 中使用了最轻量级的元素 DrawingVisual 我在不同的画布上画了线 并绑定了它们thickness为缩放系数的倒数 这样我可以在缩放时获得均匀的线条粗细 这意味着当我缩
  • 正则表达式中的否定字符[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我如何编写符合以下条件的正则表达式 没有数字 没有特殊字符 没有空间 在一个字符串中 字符类 中的插入符号是大多数正则表达式实现 Perl NET Ruby Javascript 等
  • VB6 应用时序

    我正在尝试分析 VB6 应用程序 基本上我想在方法级别计算出执行花费了多少时间 然而VB6只支持1秒的时间 有什么好的方法可以计算出毫秒等吗 虽然MSDNsays Timer仅精确到1秒 我发现它比实践中的要好 获取刻度数通常准确到abou
  • 将 C“FOR”循环转换为 Delphi

    我正在尝试将 FOR 循环从 C 转换为 Delphi 但我有一些疑问 我知道 C 中的这段代码 for i 0 i lt mb gt size i 在Delphi中是这样的 for i 0 to mb size do begin end
  • 在 AngularJS ng-repeat 中对集合进行分组?

    我有一个非常简单的场景 其中有一组记录可用 我需要以简单的 ng repeat 方式显示它们 但是 我需要按属性对记录进行分组 并且我的目标不是不必更改集合即可完成此分组 我的想法是可以应用某种类型的过滤器 但在实践中过滤器 很好地过滤数据