ng-repeat не печатает в зависимости от порядка объекта json

У меня есть таблица, которая печатается в неправильном порядке на основе JSON.

Таблица выглядит так, как показано ниже, я хочу, чтобы она была в порядке JSON:

почему ng-repeat не печатает его, как находит. Это разрабатывается на платформе ServiceNow.

Эти данные полностью динамические, заголовки и данные могут меняться в зависимости от выбранной таблицы или выбранных заголовков.

Группа назначения | Номер | Краткое описание | Создано

Уровень компании 1 INC0039473 Нет доступа к электронной почте 02.01.2019 02:54:26

Уровень компании 2 INC0039474 Этот инцидент предназначен для ежедневного администрирования SQL и упреждающих проверок. 02.01.2019 07:00:07

Уровень компании 2 INC0039475 Подозрительное письмо 02.01.2019 07:14:05

Уровень компании 1 INC0039476 удалить доступ к почтовому ящику 02.01.2019 07:30:51

Уровень компании 1 INC0039477 PDC — LogicMonitor — сервер отключен 02.01.2019 08:25:56

Уровень компании 1 INC0039479 Не удалось войти в citrix 02.01.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"

person Shay Young    schedule 27.03.2019    source источник
comment
Вы хотели пометить с помощью AngularJS вместо Angular?   -  person    schedule 27.03.2019
comment
Вы хотите, чтобы ваш вывод был похож на INC0039473 Company Level 1?   -  person Ajinkya Dhote    schedule 27.03.2019
comment
Chrome изменяет json для отображения в алфавитном порядке   -  person IsraGab    schedule 27.03.2019
comment
@IsraGab не в алфавитном порядке, если я добавлю больше заголовков, они будут в случайном порядке   -  person Shay Young    schedule 27.03.2019
comment
@AjinkyaDhote да порядок должен быть INC0039473 Company Level , но это должен быть тот порядок, в котором JSON находится в Number, Assignment Group, Created On, Assigned To   -  person Shay Young    schedule 27.03.2019
comment
Возможный дубликат Ordered JSONObject   -  person IsraGab    schedule 27.03.2019


Ответы (2)


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

Да.

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

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

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

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

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

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

Проверьте этот вопрос ( похоже на твое). Ответ также является хорошей работой.

person IsraGab    schedule 27.03.2019
comment
когда я добавляю другие столбцы, они появляются в этом порядке Группа назначения Номер Краткое описание Создано - person Shay Young; 27.03.2019
comment
Посмотрите на эту скрипту, вы увидите ее в алфавитном порядке: jsfiddle.net/mphy59d8/2 - person IsraGab; 27.03.2019