ng-repeat не печатает в зависимости от порядка объекта json - PullRequest
0 голосов
/ 27 марта 2019

У меня есть таблица, которая печатается в неправильном порядке на основе 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/201907: 30: 51

Уровень компании 1 INC0039477 PDC - LogicMonitor - Server Offline 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 DATA

"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"

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Вы можете попробовать что-то вроде этого. Для динамического рендеринга столбцов я предлагаю обработать ваш 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 голос
/ 27 марта 2019

Да.

Но ng-repeat следует использовать для работы над массивами, а не над JSON .

Когда вы пишете:

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

reportDetails.values[0] - это JSON.

Поскольку Назначение начинается с a и Число с N, назначение будетбудет отображаться первым.

Решение будет иметь отдельный массив для метаданных.Проверьте, например, здесь

Проверьте этот вопрос (выглядит как ваш).Ответ также хорошая работа вокруг.

...