2016-01-27 24 views
23

API Pracuję ze zwrotem tego, jeśli nie ma żadnych przedmiotów w tablicyng-jeśli sprawdzić, czy tablica jest pusta

items: [] 

Jeśli istnieją elementy w tablicy zwraca coś

items: [ 
    { 
    name: 'Bla' 
    } 
] 

W moim szablonie uważam, że muszę użyć polecenia ng-if, aby pokazać/ukryć element na podstawie tego, czy istnieją tam dane, czy nie.

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

Jednak mogę być całkowicie wyłączony baza jest to mój pierwszy raz pracuje w kątowe, i nie może być o wiele lepszy sposób, aby zrobić to, co usiłuję zrobić.

Odpowiedz

40

nadal będzie zdefiniowany, ponieważ jest pustą tablicą, jeśli sprawdzisz post.capabilities.items.length, powinno to działać poprawnie, ponieważ 0 jest falsy.

22

Zweryfikuj własność tablicy length być większa niż 0:

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

tablic (obiektów) w JavaScript są wartościami truthy, więc wstępna weryfikacja <p ng-if="post.capabilities.items"> ocenia zawsze true, nawet jeśli tablica jest pusta .

+1

Niestety to nie działa, jeśli tablica ma wartość 'null' lub' undefined' - pojawia się błąd środowiska wykonawczego. – Dai

Powiązane problemy