SORU
23 Ocak 2013, ÇARŞAMBA


Ö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ç:

  1. ->A-data
  2. B ->BData
  3. C ->CData

... IMHO bu gibi görünmelidir:

  1. C ->CData
  2. B ->BData
  3. ->A-data

Bir şey (burada deneme JSFiddle hazır) kaçırdım mı?

CEVAP
12 AĞUSTOS 2013, PAZARTESİ


'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/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • How Things Are Made

    How Things A

    17 HAZİRAN 2008
  • Project Mooncircle

    Project Moon

    6 Aralık 2009
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006