2016-01-27 11 views
23

L'API sto lavorando con restituisce questo se non ci sono elementi nella matriceng-se di controllo se array è vuoto

items: [] 

Se ci sono elementi dell'array restituisce qualcosa come

items: [ 
    { 
    name: 'Bla' 
    } 
] 

Nel mio modello credo di aver bisogno di usare ng-if per mostrare/nascondere un elemento in base alla presenza o meno di dati.

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

Tuttavia ho potuto essere di base completamente fuori come questo è la mia prima volta a lavorare in angolare, e ci può essere un modo molto migliore per fare quello che sto cercando di fare.

risposta

40

post.capabilities.items sarà ancora definito perché è un array vuoto, se si controlla post.capabilities.items.length dovrebbe funzionare bene perché 0 è falsy.

22

Verificare la proprietà length dell'array è maggiore di 0:

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

Array (oggetti) in JavaScript sono valori truthy, quindi la verifica prima <p ng-if="post.capabilities.items"> restituisce sempre true, anche se l'array è vuoto .

+1

Purtroppo questo non funziona se l'array è 'null' o' undefined' - Ottengo un errore di runtime. – Dai