Разные строки для каждой единицы

0

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

JSON:

[
   {
      "id":1,
      "units":[
         {
            "id":1,
            "name":"Test 1",
         },
         {
            "id":2,
            "name":"Test 2"
         }
      ]
   }
]

Таким образом, Test 1 и Test 2 должны быть в разных строках таблицы.

HTML:

<tr ng-repeat="user in users">
    <td><p ng-repeat="unit in user.units">{{unit.name}}</p></td>
</tr>

Приведенный выше код работает, но я получаю unit имена в одной строке.

Я пытался:

<tr ng-repeat="unit in users.units">
    <td>{{unit.name}}</td>
</tr>

Но это не работает. Любая помощь будет оценена!

  • 0
    Требуются ли дополнительные [] открывающие скобки?
  • 0
    Да, это @KevinP.
Показать ещё 3 комментария
Теги:
arrays
angularjs-ng-repeat

1 ответ

2
Лучший ответ

Вот решение, которое не потребует каких-либо изменений в ваших данных, хотя это может быть не самое чистое решение. Другой вариант (который я не собираюсь писать) - это изменить ваши данные и свернуть данные до одного массива или объекта, содержащего все блоки.

Я собираюсь сделать предположение, что вы хотите, чтобы ваш DOM (включая <table>) идеально выглядел следующим образом:

<table>
  <tr>
    <td><p>Test 1</p></td>
  </tr>
  <tr>
    <td><p>Test 2</p></td>
  </tr>
</table>

Проблема здесь заключается в том, что нет ничего, что представляет собой "пользовательскую" часть этого первого ng-repeat (для этой структуры данных необходимы 2-n-повторы). Насколько мне известно, невозможно запустить ng-repeat, не создавая также элемент DOM (по крайней мере, временный), поэтому мы можем создать допустимый html (<caption> в этом случае) и иметь угловое исключение используя одноразовую привязку ng-if.

<div ng-controller="MyCtrl">
    <table>
        <!-- The ng-if here will remove the <caption> from the end result. It just a placeholder for the users repeater. -->
        <caption ng-repeat-start="user in users" ng-if="::false"></caption>
        <tr ng-repeat="unit in user.units">
            <td><p>{{unit.name}}</p></td>
        </tr>
        <caption ng-repeat-end ng-if="::false"></caption>
    </table>
</div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню