2013-05-29 38 views
19

Tôi có một đối tượng mà trông như thế này:AngularJS - Làm thế nào để orderby giá trị của một đối tượng mảng giống như trong một ng-repeat

{ 
    "03" : "Apple", 
    "02" : "Banana", 
    "01" : "Cranberry" 
} 

và nó ra lệnh cho nó bằng các phím (có ý nghĩa) trong ng-lặp lại của tôi. Điều này dẫn đến các nhãn nằm ngoài thứ tự bảng chữ cái ("cranberry" là thứ nhất). Làm thế nào để tôi thực hiện nó để nó đặt hàng bộ lặp của tôi bằng các giá trị (theo bảng chữ cái)?

Tôi có thể cung cấp theo thứ tự tôi muốn lặp lại, nhưng nó sắp xếp theo khóa. Nếu tôi có thể làm cho nó không làm điều đó, thì điều đó cũng sẽ hoạt động.

+0

Có điều gì ngăn bạn từ sắp xếp dữ liệu trong điều khiển? –

+2

Tôi không biết câu trả lời, nhưng tôi biết rằng việc cung cấp đối tượng được sắp xếp trước sẽ không hoạt động, bởi vì các công cụ JS không có nghĩa vụ duy trì thứ tự các thuộc tính trong một đối tượng. – IMSoP

Trả lời

28

Để sắp xếp mảng trong ngRepeat bạn có thể sử dụng orderBy filter nhưng nó chỉ hoạt động với mảng, vì vậy bạn nên sử dụng mảng trong ngRepeat.

Nó sẽ là một cái gì đó như thế này trong bộ điều khiển:

$scope.myData = [ 
    { 
     key: "01", 
     value: "Cranberry" 
    }, 
    { 
     key: "02", 
     value: "Banana" 
    }, 
    { 
     key: "03", 
     value: "Apple" 
    } 
]; 

và trong html:

<div class="item" ng-repeat="item in myData|orderBy:'value'">{{item.value}}</div> 
+1

Nhưng nếu bạn thực sự muốn sử dụng đối tượng trong phạm vi, bạn có thể tạo một bộ lọc chuyển đổi một đối tượng thành mảng. –

+0

Không có nhu cầu cụ thể để sử dụng một đối tượng vì vậy tôi đã sử dụng phương pháp bạn đề xuất và nó hoạt động rất tốt. Cảm ơn bạn :) –

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