Ответ 1
post.capabilities.items
будет по-прежнему определяться, потому что это пустой массив, если вы проверите post.capabilities.items.length
, он должен работать нормально, потому что 0
является ложным.
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, и может быть намного лучший способ сделать то, что я пытаюсь сделать.
post.capabilities.items
будет по-прежнему определяться, потому что это пустой массив, если вы проверите post.capabilities.items.length
, он должен работать нормально, потому что 0
является ложным.
Убедитесь, что свойство 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
, даже если массив пуст.