ng-repeat不是基于json对象的顺序打印的

问题描述 投票:0回答:2

我有一个基于JSON以不正确的顺序打印的表。

该表如下所示,我希望它符合JSON的顺序:

为什么ng-repeat不会在找到它时打印出来。这是在ServiceNow平台上开发的。

此数据是完全动态的,标头和数据可能会根据所选表格或选择的标题而更改。

作业组|号码|简短说明|创建

公司等级1 INC0039473无法访问电子邮件01/02/2019 02:54:26

公司级别2 INC0039474此事件适用于SQL每日管理和主动检查。 01/02/2019 07:00:07

公司2级INC0039475可疑电子邮件01/02/2019 07:14:05

公司1级INC0039476删除邮箱访问01/02/2019 07:30:51

公司1级INC0039477 PDC - LogicMonitor - 服务器离线01/02/2019 08:25:56

公司等级1 INC0039479无法登录citrix 01/02/2019 08:44:21

HTML

<div ng-if="reportDetails.isList">
        <table class="etable" >
          <tbody>
            <tr class="eborder">
              <th ng-repeat="(key, data) in reportDetails.values[0]">{{key}}</th>
            </tr>
            <tr ng-repeat="(key, data) in reportDetails.values">
              <td ng-repeat="rows in reportDetails.values[key]">{{rows}}</td>
            </tr>
          </tbody>
        </table>
      </div>

JSON数据

"values":[
{
"Number":"INC0039473",
"Assignment group":"Company Level 1",
"Created":"01/02/2019 02:54:26",
"Short description":"No access to email"
},
{
"Number":"INC0039474",
"Assignment group":"Company Level 2",
"Created":"01/02/2019 07:00:07",
"Short description":"This Incident is for SQL daily admin and pro-active checks."
},
{
"Number":"INC0039475",
"Assignment group":"Company Level 2",
"Created":"01/02/2019 07:14:05",
"Short description":"Suspicious email"
},
{
"Number":"INC0039476",
"Assignment group":"Company Level 1",
"Created":"01/02/2019 07:30:51",
"Short description":"remove mailbox access"
},
{
"Number":"INC0039477",
"Assignment group":"Company Level 1",
"Created":"01/02/2019 08:25:56",
"Short description":"PDC - LogicMonitor - Server Offline"
javascript angularjs servicenow
2个回答
1
投票

你可以尝试这样的事情。要动态渲染列,我建议您处理json以获取数组中的确切顺序并使用它,或者只是您可以对列进行硬编码,如果这对您来说不是问题

<div ng-if="reportDetails.isList">
    <table class="etable" >
      <tbody>
        <tr class="eborder">
          <th >Number</th>
          <th>Assignment group</th>
        </tr>
        <tr ng-repeat="(key, data) in reportDetails.values">
          <td ng-repeat="rows in reportDetails.values[key]">{{rows.Number}}{{rows["Assignment group"]}}</td>
        </tr>
      </tbody>
    </table>
  </div>

1
投票

确实如此。

ng-repeat应该用于运行数组,而不是JSON。

当你写:

 <th ng-repeat="(key, data) in reportDetails.values[0]">{{key}}</th>

reportDetails.values[0]是一个JSON。

因为Assignement以qazxsw poi和Number与qazxsw poi开头,所以首先会显示Assignment。

解决方案是为元数据提供单独的数组。检查例如a

检查这个N(看起来像你的)。答案也是一个很好的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.