2014-10-29 28 views
6

Tôi muốn ng-lặp lại nhưng chỉ từ phần tử mảng thứ hai cho đến lần cuối cùng. Tôi đã cố gắng sử dụngAngularJS: ng-lặp lại từ chỉ số thứ hai

ng-repeat="entry in entries | filter: $index==0" 

nhưng cách này không hiệu quả. Nếu tôi cố gắng sử dụng ng-if, như thế này

ng-repeat="entry in entries" ng-if="$index != 0" 

Tôi gặp lỗi khi chuyển đổi.

Giải pháp tốt nhất cho việc này là gì? BTW, phiên bản AngularJS của tôi là 1.1.5 vì ứng dụng của tôi là một plugin cho Hawtio (vẫn còn bị mắc kẹt trong phiên bản 1.1.5). Cảm ơn.

Trả lời

16

Tại sao không chỉ:

ng-repeat="entry in entries.slice(1,entries.length)" 

Fiddle: http://jsfiddle.net/10d6o1aq/

+0

Tôi sẽ sử dụng phần tử đầu tiên ở một nơi khác trong html, vì vậy đây có thể không phải là một tùy chọn. – menorah84

+1

@ menorah84 bạn chắc chắn có thể làm điều đó: http://jsfiddle.net/10d6o1aq/1/ – Cherniv

+0

@ menorah84 đừng sợ, nó chỉ là bản sao lát của một mảng ban đầu trong một khung nhìn – Cherniv

5

Bạn có thể thử này:

ng-repeat="entry in entries" ng-show="!$first" 

Đây là reference.

+2

Vâng, như Mukund đã đề cập sau, 'ng-hide =" $ first "' cũng hợp lệ. – denisazevedo

4

ẩn yếu tố đầu tiên sử dụng $first

<div ng-repeat="entry in entries" ng-hide="$first"> 
    ... 
</div> 
2

Có một giải pháp đơn giản trong nhiều phiên bản gần đây của góc (mà sẽ không hoạt động cho câu hỏi ban đầu, được giới hạn trong phiên bản Angular 1.1.5, nhưng nó sẽ hoạt động đối với những người khác xem qua bài đăng này)

Bộ lọc "limitTo" bây giờ hỗ trợ một "bắt đầu" lập luận (docs):

{{ limitTo_expression | limitTo : limit : begin}} 

Vì vậy, bạn có thể sử dụng nó như thế này trong một ng-repeat:

ng-repeat="entry in entries | limitTo: entries.length : 1" 

Điều này có nghĩa rằng ng-repeat sẽ bắt đầu từ chỉ mục 1 (thay vì chỉ số mặc định 0) và sẽ tiếp tục cho phần còn lại của chiều dài mảng của mục nhập (nhỏ hơn entries.length, nhưng limitTo sẽ xử lý điều đó tốt).

Các vấn đề liên quan