Подтвердить что ты не робот

Ng-if проверить, нет ли массива пустым

API, с которым я работаю, возвращает это, если в массиве нет элементов

items: []

Если в массиве есть элементы, он возвращает что-то вроде

items: [
  {
    name: 'Bla'
  }
]

В моем шаблоне я считаю, что мне нужно использовать ng-if, чтобы показать/скрыть элемент на основе того, есть ли там данные или нет.

<p ng-if="post.capabilities.items"><strong>Topics</strong>: <span ng-repeat="topic in post.capabilities.items">{{topic.name}}</p>

Однако я мог бы полностью отключиться, так как это мой первый опыт работы в Angular, и может быть намного лучший способ сделать то, что я пытаюсь сделать.

4b9b3361

Ответ 1

post.capabilities.items будет по-прежнему определяться, потому что это пустой массив, если вы проверите post.capabilities.items.length, он должен работать нормально, потому что 0 является ложным.

Ответ 2

Убедитесь, что свойство length для массива больше 0:

<p ng-if="post.capabilities.items.length > 0">
   <strong>Topics</strong>: 
   <span ng-repeat="topic in post.capabilities.items">
     {{topic.name}}
   </span>
</p>

Массивы (объекты) в JavaScript являются правными значениями, поэтому ваша начальная проверка <p ng-if="post.capabilities.items"> всегда всегда равна true, даже если массив пуст.