2013-09-27 5 views
7

Ich habe eine Person mit einem Namen und einer optionalen Homepage. Wie füge ich optional ihren Namen in ein Anchor-Tag ein?In AngularJS, wie füge ich optional Artikel in einen Link

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

oder in dem Fall, in dem person.website nil

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

In Schienen ich die Methode <%= link_to_unless person.website.blank?, seller.name, seller.website %>

Wie kann ich in AngularJS dies tun, verwenden würde?

Antwort

4

Sie könnten die folgende Funktion zu Ihrem Umfang hinzu:

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

oder könnten Sie Ihre HTML zu etwas überarbeiten wie:

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

(nur eine Note von OP Kommentar inspiriert, ng-if ist nur bei anugular 1.1.5 verfügbar, bei älteren Versionen ng-show und ng-hide statt

oder Sie könnten eine benutzerdefinierte Anweisung schreiben und sie wie folgt verwenden:

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

Vielen Dank für die drei Möglichkeiten. Als eckiger Neuling bin ich mir nicht sicher, welchen ich wählen soll. – zhon

+0

Ich würde für die zweite gehen, da es schnell, einfach ist und Ihnen immer noch eine Möglichkeit gibt, mehr kantige Direktiven in Ihrem HTML – adamziel

+0

Zögern Sie nicht, diese Antwort zu akzeptieren, wenn es Ihre Frage beantwortet :) – adamziel

Verwandte Themen