2013-12-16 16 views
5

Tôi gặp một mảng trong bộ điều khiển như sauLàm thế nào để đảo ngược một mảng trong js góc mà không cần tạo một bộ lọc

function FooController($scope) { 
    $scope.items = ["a","b","c"]; 
} 

Tôi đã từng ng-repeat để hiển thị các dữ liệu trong items,

<div ng-app> 
    <div ng-controller="FooController"> 
     <ul ng-repeat="item in items"> 
      <li>{{item}}</li> 
     </ul> 
    </div> 
</div> 

Tôi nhận được kết quả như một, b, c. Tôi muốn thể hiện nó theo thứ tự ngược lại. điều đó có nghĩa là c, b, a mà không thay đổi thứ tự của nó trong bộ điều khiển hoặc mà không cần tạo bộ lọc. Làm thế nào để làm điều đó? Kiểm tra này link

Trả lời

7

Để tránh việc ghi bộ lọc tùy chỉnh, tôi sug cho phép bạn sử dụng cú pháp này:

<ul ng-repeat="item in items | orderBy:'-toString()'"> 

Tài liệu giả định bạn sắp xếp một mảng đối tượng nhưng trong trường hợp của bạn chỉ có chuỗi đơn giản.

2

Bó chuỗi trong đối tượng và sử dụng orderBy hoặc tạo một bộ lọc mới:

angular.module("app",[]) 
.filter("reverse", function(){ 
    return function(items){ 
     return items.slice().reverse(); // Create a copy of the array and reverse the order of the items 
    }; 
}); 

Và sử dụng nó như thế này:

<ul ng-repeat="item in items|reverse"> 

Updated fiddle (Tôi cũng đã cập nhật Chỉ thị ng-app để nó được thông qua mô-đun "ứng dụng".)

+0

Khi tôi lưu trữ của tôi 'items' tôi sử dụng' items.slice() đảo ngược(); 'bây giờ nó đảo ngược khá tốt. –

14

Tôi phải đối mặt với cùng một vấn đề, nhưng với một loạt các đối tượng. Giải pháp nhanh này làm việc cho tôi, nhưng sử dụng bộ lọc là cách thực hành tốt nhất. .

data-ng-repeat="item in items.slice().reverse()"

http://bootply.com/SgVBZvZ708

+3

reverse() là một hàm javascript gốc ... tại sao bạn coi đây là "giải pháp bẩn"? – sports

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