2016-01-27 3 views
23

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

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

ответ

40

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

22

Проверьте 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 является truthy значения, так что ваша первоначальная проверка <p ng-if="post.capabilities.items"> всегда имеет значение true, даже если массив пуст ,

+1

К сожалению, это не сработает, если массив «null» или «undefined» - я получаю ошибку времени выполнения. – Dai

Смежные вопросы