2014-12-25 15 views
40

Tôi muốn bỏ qua mục đầu tiên trong bất cứ điều gì ng-lặp lạiBỏ qua mục đầu tiên trong ng-repeat

..first item here 

<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines | filter:$index>0"> 
      ... 
     </li> 
</ul> 

nó không hoạt động, sai ở đây?

Tôi hiểu rằng tôi có thể sử dụng ng-if, ng-show để ẩn mọi thứ nhưng tôi không thể hiểu tại sao bộ lọc không hoạt động trong 1.3.x trong trường hợp này.

Cảm ơn.

+1

'$ index' là biến được đặt bởi' ng-repeat' trên phạm vi. Bạn không thể tham chiếu nó từ bộ lọc được đánh giá trước khi chỉ thị bắt đầu làm bất cứ điều gì. Ngoài ra tôi không nghĩ cú pháp này được hỗ trợ bởi thành phần bộ lọc. Tuy nhiên, bạn có thể sử dụng biểu thức dựa trên hàm, lấy 'chỉ mục' làm đối số thứ hai của nó. –

+0

cảm ơn thông tin của bạn. –

+0

Có thể trùng lặp của [AngularJS: ng-lặp lại từ chỉ mục thứ hai] (https://stackoverflow.com/questions/26624341/angularjs-ng-repeat-from-second-index) –

Trả lời

71
<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines" ng-if="$index > 0"> 
      ... 
     </li> 
</ul> 
+30

Một lựa chọn khác là 'ng-if ="! $ đầu tiên "'. – bbrown

+0

cái này là tốt @bbrown – JohnB

28

Sử dụng $ đầu tiên cho này:

<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines" ng-hide="$first"> 
      ... 
     </li> 
</ul> 

Hoặc,

<ul class="highlight-topright"> 
      <li ng-repeat="item in hpHeadlines" ng-if="!$first"> 
       ... 
      </li> 
    </ul> 
0

Bạn có thể sử dụng ng-show hoặc ng-if mà không sử dụng nó như một bộ lọc. Nó dễ dàng hơn vì bạn biết chỉ mục bạn muốn bỏ qua.

Sử dụng bộ lọc thường là khi bạn muốn làm điều gì đó liên quan đến tất cả mảng, chẳng hạn như định dạng ví dụ hoặc các phần mà bạn không biết nơi chúng cư trú.

<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines" ng-show="$index != 0"> 
      {{item.name}} 
     </li> 
    </ul> 

JS Fiddle

0

Bạn có thể sử dụng ng-show thay vào đó, như thế này:

<ul class="highlight-topright"> 
    <li ng-repeat="item in hpHeadlines" ng-show="$index > 0"> 
     ... 
    </li> 
</ul> 

Hoặc bạn có thể sử dụng ng-nếu chỉ trong trường hợp bạn không muốn thêm vô hình yếu tố dom.

12

Bạn cũng có thể sử dụng bộ lọc limitTo.

Là chỉ số phủ định, bắt đầu cho biết mức chênh lệch từ cuối đầu vào. Mặc định là 0.

<li ng-repeat="item in hpHeadlines | limitTo: 1 - hpHeadlines.length"> 
    ... 
</li> 
1

Có thể tôi sẽ trả lời muộn. Nhưng chỉ dành cho người mới, tôi đang cung cấp giải pháp. Như bạn muốn bỏ qua kỷ lục đầu tiên, vì vậy bạn có thể sử dụng một trong hai chỉ số $ hoặc $ đầu tiên để đạt được, như hình dưới đây:

<li ng-repeat="item in hpHeadlines" ng-if="$index">  OR 

<li ng-repeat="item in hpHeadlines" ng-if="!($first)"> 

Như bạn có thể thấy, trong cả hai, ng-nếu là bỏ qua '0' giá trị .

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