2013-09-27 5 views
7

Ho una persona con un nome e una pagina iniziale opzionale. Come posso opzionalmente avvolgere il loro nome in un tag di ancoraggio?In AngularJS, come faccio a ricopiare facoltativamente l'articolo in un collegamento

<ul ng-repeat='person in people'> 
    <li> 
    <a href="{{person.website}}"> 
     {{person.name}} 
    </a> 
    </li> 
</ul> 

o nel caso in cui person.website è nulla

<ul ng-repeat='person in people'> 
    <li> 
    {{person.name}} 
    </li> 
</ul> 

In rotaie vorrei utilizzare il metodo <%= link_to_unless person.website.blank?, seller.name, seller.website %>

Come faccio a fare questo in AngularJS?

risposta

4

Si potrebbe aggiungere la seguente funzione alla vostra portata:

$scope.linkToUnless = function(condition, label, href) { 
    return condition ? '<a href="'+href'+">'+label+'</a>' : label; 
}; 

o si potrebbe rielaborare il codice HTML a qualcosa di simile:

<ul ng-repeat='person in people'> 
    <li> 
    <a href="{{person.website}}" ng-if="person.website"> 
     {{person.name}} 
    </a> 
    <span ng-if="!person.website"> 
     {{person.name}} 
    </span> 
    </li> 
</ul> 

(solo una nota ispirata dal commento di OP, ng-if è disponibile solo da 1.1.5 anugolare, per le versioni precedenti utilizzare ng-show e ng-hide invece

oppure potresti scrivere una direttiva personalizzata e usarla come:

<link-to-if href="person.website" label="person.name" /> 
+0

Grazie per le tre possibilità. Come novizio angolare, non sono sicuro di quale scegliere. – zhon

+0

Vorrei andare per il secondo poiché è veloce, semplice e ti offre comunque la possibilità di utilizzare facilmente più direttive angolari nel tuo codice HTML – adamziel

+0

Non esitare ad accettare questa risposta se risponde alla tua domanda :) – adamziel

Problemi correlati