AngularJS özelliğe göre sıralama
Yapmaya çalıştığım şey, bazı verileri özelliğe göre sıralamak. İşte çalışması gerektiğini düşündüğüm ama çalışmayan bir örnek.
HTML kısmı:
<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>
JS kısmı:
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},
}
}]);
Ve sonuç:
- A -> AData
- B -> BData
- C -> CData
... IMHO'ya göre bu şekilde görünmelidir:
- C -> CData
- B -> BData
- A -> AData
Bir şey mi kaçırdım (işte denemek için hazır [JSFiddle][1])?
92
3
AngularJS' orderBy filtresi sadece dizileri destekler - nesneleri desteklemez. Bu nedenle, sıralamayı sizin için yapan kendi küçük filtrenizi yazmanız gerekir.
Veya işlediğiniz verilerin biçimini değiştirin (bu konuda etkiniz varsa). Nesneleri içeren bir dizi, yerel orderBy filtresi tarafından sıralanabilir.
İşte AngularJS için benim orderObjectBy filtrem:
Sizin görüşünüze göre kullanım:
Bu örnekte nesnenin bir position niteliğine ihtiyacı vardır, ancak nesnelerde (bir tamsayı içeren) herhangi bir niteliği kullanma esnekliğine sahipsiniz, sadece görünümdeki tanımla.
Örnek JSON:
İşte size kullanımı gösteren bir keman: http://jsfiddle.net/4tkj8/1/
Angular-JS kodunda görebileceğiniz gibi ( https://github.com/angular/angular.js/blob/master/src/ng/filter/orderBy.js ) ng-repeat nesnelerle çalışmaz. İşte sortFunction ile bir hack.
http://jsfiddle.net/sunnycpp/qaK56/33/
http://docs.angularjs.org/api/ng.filter:orderBy 'a göre, orderBy bir diziyi sıralar. Sizin durumunuzda bir nesne geçiyorsunuz, bu nedenle kendi sıralama işlevinizi uygulamanız gerekecek.
veya bir dizi iletin -
http://jsfiddle.net/qaK56/ adresine bir göz atın