2014-07-26 3 views
21

Ich habe die folgende Verwendung von Winkel jsAngular Js: Wie findet man das erste und letzte Element in ng-repeat und fügt ihnen eine spezielle Klasse hinzu?

<section id="social"> 
    <h2 class="line">Social Profiles</h2> 
    <a href="#" class="first"><i class="icon-facebook"></i></a> 
    <a href="#"><i class="icon-twitter"></i></a> 
    <a href="#"><i class="icon-linkedin"></i></a> 
    <a href="#"><i class="icon-google-plus"></i></a> 
    <a href="#" class="last"><i class="icon-rss"></i></a> 
    <div class="clear"></div> 
</section> 

Zu diesem

<section id="social"> 
    <h2 class="line">Social Profiles</h2> 
    <a ng-repeat="sMedia in socialMedia" ng-if="$first" href="#" > 
     <i class="{{sMedia.icon}}"></i> 
    </a> 
    <div class="clear"></div> 
</section> 

Alles scheint in Ordnung, außer ich nicht einen Weg hinzuzufügen class="first" in dem ersten Element und class="last" in dem letzten Element ng-repeat finden konnten, .

Antwort

34

verwenden nur $ ersten und $ zuletzt mit ng-Klasse kombiniert:

<a ng-repeat="sMedia in socialMedia" ng-class="{'first': $first, 'last': $last}" href="#" > 

hier sehen, wie sie funktionieren: https://docs.angularjs.org/api/ng/directive/ngRepeat

+1

Das ist genau das, was ich wollen, danke Kumpel !!! – rishal

5

Sie verwenden können:

#social a:first-child{ /* your first css code */ } 
#social a:last-child{ /* your last css code */ } 
+0

Funktioniert nicht wie erwartet, wenn die .g-hide-Klasse auf das erste und/oder letzte Element angewendet wird: first-child /: last-child kümmert sich nicht darum, ob das Element auf dem Bildschirm gerendert wird oder nicht , aber ob es buchstäblich das erste oder letzte Element innerhalb des Markups ist. http://fiddle.jshell.net/p5qe82w4/4/ –

+0

@KerryJohnson Das stimmt, aber es ist nicht im Bereich der Frage. Diese Antwort funktioniert gut für das, was gefragt wurde. (sag das, nur für den Fall, dass du denkst, dass diese Antwort schlecht ist) – Shomz

+0

@Shomz stimme ich nicht zu. Er fragte, wie man dem ersten und letzten Element in ng-repeat seine eigene Klasse hinzufügt und nicht fragt, ob es einen Pseudoklassen-Selektor zur Auswahl der ersten und letzten Klasse gibt. Da diese Antwort einige auffragte, schildere ich einfach den Vorbehalt dieser Antwort und wahrscheinlich den Grund, warum viele von uns hier sind (um diesen Vorbehalt zu vermeiden). –