Özelliğe göre sıralama AngularJS
Yapmaya çalıştığım ne özelliği tarafından bazı verileri sıralamak. Burada İ öğretti iş olmalı, ama değil bu ö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-data
- B ->BData
- C ->CData
... IMHO bu gibi görünmelidir:
- C ->CData
- B ->BData
- ->A-data
Bir şey (burada deneme JSFiddle hazır) kaçırdım mı?
CEVAP
'OrderBy filtre diziler desteklemiyor sadece - hiçbir nesne. AngularJS Sizin için sıralama yapan kendi küçük bir filtre, yazmak zorunda.
Ya da sen ilgilen veri biçimini değiştirmek o üzerindeki etkisi (varsa). Bir dizi nesneleri içeren yerel orderBy filtre sıralanabilir.
Burada benimorderObjectByAngularJS için filtre
app.filter('orderObjectBy', function(){
return function(input, attribute) {
if (!angular.isObject(input)) return input;
var array = [];
for(var objectKey in input) {
array.push(input[objectKey]);
}
array.sort(function(a, b){
a = parseInt(a[attribute]);
b = parseInt(b[attribute]);
return a - b;
});
return array;
}
});
Sizin görüşünüze kullanımı:
<div class="item" ng-repeat="item in items | orderObjectBy:'position'">
//...
</div>
Nesne bu örnekte pozisyon bir nitelik ihtiyacı var, ama nesneleri (bir tamsayı içeren) herhangi bir nitelik, görünüm tanımında sadece kullanmak için esneklik.
Örnek JSON:
{
"123": {"name": "Test B", "position": "2"},
"456": {"name": "Test A", "position": "1"}
}
Burada kullanımını gösteren bir keman: http://jsfiddle.net/4tkj8/1/
İki ölçüte göre bir Python listesi sır...
Sıralama AngularJS alfabetik olarak aç...
Sıralama Tarihe Göre Nesne Dizisi Java...
Sıralama listesi başka bir listeden de...
Tarihe göre azalan AngularJs filtre...