Apa yang saya coba lakukan adalah mengurutkan beberapa data menurut properti. Berikut adalah contoh yang menurut saya harus berhasil tetapi tidak.
Bagian HTML:
<div ng-app='myApp'>
<div ng-controller="controller">
<ul>
<li ng-repeat="(key, value) in testData | orderBy:'value.order'">
{{value.order}}. {{key}} -> {{value.name}}
</li>
</ul>
</div>
</div>
Bagian JS:
var myApp = angular.module('myApp', []);
myApp.controller('controller', ['$scope', function ($scope) {
$scope.testData = {
C: {name:"CData", order: 1},
B: {name:"BData", order: 2},
A: {name:"AData", order: 3},
}
}]);
Dan hasilnya:
- A -> AData
- B -> BData
- C -> CData
... IMHO itu akan terlihat seperti ini:
- C -> CData
- B -> BData
- A -> AData
Apakah saya melewatkan sesuatu (ini JSFiddle siap untuk bereksperimen)?
sumber
{1:'Example 1', 2:'Example 2', 3:'Example 3', ...}
for(var objectKey in input) { input[objectKey]['_key'] = objectKey; array.push(input[objectKey]); }
Seperti yang bisa kita gunakan<div ng-repeat="value in object | orderObjectBy:'order'" ng-init="key = value['_key']">
... | orderBy: 'name'
.Sangat mudah, lakukan saja seperti ini
sumber
Jangan lupa bahwa parseInt () hanya berfungsi untuk nilai Integer. Untuk mengurutkan nilai string Anda perlu menukar ini:
dengan ini:
sumber
Seperti yang Anda lihat di kode angular-JS ( https://github.com/angular/angular.js/blob/master/src/ng/filter/orderBy.js ) ng-repeat tidak bekerja dengan objek. Ini adalah peretasan dengan sortFungsi.
http://jsfiddle.net/sunnycpp/qaK56/33/
sumber
menurut http://docs.angularjs.org/api/ng.filter:orderBy , orderBy mengurutkan sebuah array. Dalam kasus Anda, Anda mengirimkan objek, jadi Anda harus menerapkan fungsi penyortiran Anda sendiri.
atau lewati array -
lihat di http://jsfiddle.net/qaK56/
sumber
Anda harus benar-benar meningkatkan struktur JSON Anda untuk memperbaiki masalah Anda:
Maka Anda bisa melakukannya
Masalahnya, menurut saya, adalah bahwa variabel (key, value) tidak tersedia untuk filter orderBy, dan Anda tidak boleh menyimpan data di kunci Anda.
sumber
Inilah yang saya lakukan dan berhasil.
Saya baru saja menggunakan objek yang dirangkai.
<div ng-repeat="message in thread | orderBy : '-mostRecent.timeStamp'" >
jika saya ingin mengurutkan berdasarkan teks saya akan melakukannya
sumber
Saya akan menambahkan versi filter saya yang ditingkatkan yang dapat mendukung sintaks berikutnya:
Terima kasih kepada Armin dan Jason atas jawaban mereka di utas ini, dan Alnitak di utas ini .
sumber
Jawaban Armin + pemeriksaan ketat untuk tipe objek dan kunci non-sudut seperti
$resolve
sumber
Berikut ini memungkinkan untuk pengurutan objek dengan kunci ATAU dengan kunci dalam suatu objek .
Dalam template Anda dapat melakukan sesuatu seperti:
Atau bahkan:
Filter:
sumber