【问题标题】:Angularjs ui.grid display nested rowsAngularjs ui.grid 显示嵌套行
【发布时间】:2016-01-22 21:55:34
【问题描述】:

我一直在尝试在列中获取嵌套的 json 数据。 json结构为:

[{
    "ratings": [{
            "rating": "Detractor",
            "employees": [{
                "empName": "Pavan",
                "quarters": [{
                    "quarterName": "q1 2015",
                    "weeks": [{
                            "weekName": "week1",
                            "month": "January",
                            "points": [{
                                "0": "point1"
                            }, {
                                "1": "point2"
                            }]
                        }
                        , {
                            "weekName": "week2",
                            "month": "January",
                            "points": [{
                                "0": "point1"
                            }, {
                                "1": "point2"
                            }]
                        }, {
                            "weekName": "week3",
                            "month": "January",
                            "points": [{
                                "0": "point1"
                            }, {
                                "1": "point2"
                            }]
                        }
                    ]
                }, {
                    "quarterName": "q2 2015",
                    "weeks": [{
                            "weekName": "week4",
                            "month": "January",
                            "points": [{
                                "0": "point1"
                            }, {
                                "1": "point2"
                            }]
                        }
                        , {
                            "weekName": "week5",
                            "month": "January",
                            "points": [{
                                "0": "point1"
                            }, {
                                "1": "point2"
                            }]
                        }, {
                            "weekName": "week6",
                            "month": "January",
                            "points": [{
                                "0": "point1"
                            }, {
                                "1": "point2"
                            }]
                        }
                    ]
                }]
            }]
        }
    ]
}]

输出应该在一列中有评分,下一列是对应的员工,第三列是分数。 我找到了一个解决方案here,但它只处理一个级别,我无法将其扩展到多个级别。

我需要显示每周数据。

Expected Output

【问题讨论】:

  • 您的问题不清楚,因为您的实体之间存在一些一对多的关系。你能用输出的例子让事情更清楚吗?
  • @imbalind- 为预期输出添加了图像。
  • 您是否总是正好有 2 个季度,每个季度正好由 3 周组成,或者季度和周之间的关系是动态的?
  • 它是动态的。我可以有 n 个季度,每个季度最多可以有 13 周。

标签: javascript angularjs angular-ui-grid


【解决方案1】:

一般来说在ui-grid中访问嵌套对象是没有问题的。

在您的情况下,问题似乎与您具有动态结构这一事实更相关。

在 ui-grid 中,您可以使用包含该值的完整路径的字符串为列分配值,例如:

  • 假设您将评级子数组分配给gridOptions.data,则week1week2week4field 值分别为:
    • 'employees[0].quarters[0].weeks[0].points[0]'
    • 'employees[0].quarters[0].weeks[1].points[0]'
    • 'employees[0].quarters[1].weeks[0].points[0]'

现在,再加上周数和季度数不是固定的,您会发现没有直接的方法以编程方式将周数与周数和季度数组所需的索引相关联。

我认为处理此问题的最佳方法是遍历您收到的原始数据并构建更适合网格的新 JSON。

在伪代码中你可以这样做:

initialize results array
iterate through ratings
  create new empty object (current_object)
  add current_object to results array
  iterate through employees
    iterate through quarters
      iterate through weeks
        add value for i-th week as week_i to current_object

【讨论】:

  • 能否请您提供一下。这真的很有用。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多