ng-repeat의 마지막 요소에 대한 다른 클래스


152

ng-repeat를 사용하여 목록을 만들고 있습니다.

  <div ng-repeat="file in files">
   {{file.name}}
   </div>

그러나 마지막 요소만으로 클래스 ( <div class="last">test</div>)를 포함하고 싶습니다 . ng-repeat를 사용하여 어떻게 이것을 달성 할 수 있습니까?


지난 2 시간 동안 동일하게 붙어 :)
Anshul

답변:


241

지시문 $last내에서 변수 를 사용할 수 있습니다 ng-repeat. 한 번 봐 가지고 문서를 .

다음과 같이 할 수 있습니다 :

 <div ng-repeat="file in files" ng-class="computeCssClass($last)">
 {{file.name}}
 </div>

computeCssClass함수 controller가 단독 인수를 취 'last'하거나 또는를 리턴하는 위치는 어디 입니까 null?

또는

  <div ng-repeat="file in files" ng-class="{'last':$last}">
  {{file.name}}
  </div>

1
나는 이전에 그것을 보았지만 $ last를 정확히 어떻게 사용하는지 알아낼 수 없었습니다.
Rahul

@Rahul, 나는 대답을 업데이트했습니다. 내가 무슨 말을하는지 이해합니까?
Paul Brit

8
예 .. Google 그룹으로부터 또 다른 답변을 받았습니다 <div ng-repeat="file in files" ng-class="{last: $last}"> {{file.name}} </div>
Rahul

1
@Rahul, 당신의 대답은 내 것보다 낫습니다.
Paul Brit

@Rahul, 슬프게도, 그것은 나를 위해 작동합니다. 개발자 콘솔에는 무엇이 있습니까?
Paul Brit

23

CSS를 사용하면 더 쉽고 깔끔합니다.

HTML :

<div ng-repeat="file in files" class="file">
  {{ file.name }}
</div>

CSS :

.file:last-of-type {
    color: #800;
}

:last-of-type선택은 현재 브라우저의 98 %가 지원됩니다


3
CSS 방식의 AngularJS 솔루션 👌
Mo.

1
NB :이 ng-repeat뒤에 오는 경우에는 작동하지 않으며 <div class="file"><!-- dummy for creating new element --></div>기존 .file div 목록을 설정하려고합니다 .
DerMike

1
@DerMike에서 당신이에 다른 클래스를 넣어 줄 경우 것이 ng-repeat요소는 후미에서 그들을 차별화div
에이단

14

Paul의 답변을 자세히 설명하기 위해 템플릿 코드와 일치하는 컨트롤러 논리입니다.

// HTML
<div class="row" ng-repeat="thing in things">
  <div class="well" ng-class="isLast($last)">
      <p>Data-driven {{thing.name}}</p>
  </div>
</div>

// CSS
.last { /* Desired Styles */}

// Controller
$scope.isLast = function(check) {
    var cssClass = check ? 'last' : null;
    return cssClass;
};

또한 가능한 경우이 솔루션을 피해야한다는 점도 주목할 가치가 있습니다. 본질적으로 CSS는이를 처리 할 수 ​​있으므로 JS 기반 솔루션을 만드는 것은 불필요하며 성능이 떨어집니다. 불행히도 IE8을 지원 해야하는 경우>이 솔루션은 효과가 없습니다 ( MDN 지원 문서 참조 ).

CSS 전용 솔루션

// Using the above example syntax
.row:last-of-type { /* Desired Style */ }

참고 : .ng-hide 클래스가 마지막 요소에 적용되면 CSS 전용 솔루션이 작동하지 않습니다. 마크 업 세트 내의 요소. fiddle.jshell.net/p5qe82w4/4
Kerry Johnson

7
<div ng-repeat="file in files" ng-class="!$last ? 'class-for-last' : 'other'">
   {{file.name}}
</div>

그것은 나를 위해 작동합니다! 행운을 빕니다!


$ last가 아니라면 마지막 클래스가 있고 마지막 요소는 다른 클래스가 있습니다.
strwoc

2

limitTo필터를 사용 -1하여 마지막 요소를 찾을 수 있습니다

:

<div ng-repeat="friend in friends | limitTo: -1">
    {{friend.name}}
</div>

0

Fabian Perez의 대답은 약간의 변화로 저를 위해 일했습니다.

편집 된 HTML은 다음과 같습니다.

<div ng-repeat="file in files" ng-class="!$last ? 'other' : 'class-for-last'"> {{file.name}} </div>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.