2015-04-14 24 views
6

Dinamik olarak sipariş vermek istediğim, bir açılır menüdeki bir değere dayanan bir dizi nesnem var.Dinamik sıralıDeğişiklikBY

ng-repeat="item in filteredItems = (items | filter:searchInput | orderBy:canBeAnything)" 

Ama sorun bununla sıralama nesnenin nitelik veya işlevini kullanarak hesaplanmış bir değer olabilir ki: Bu benim listesinde bugüne kadar ne olduğunu. Aynı zamanda azalan bir şekilde (isteğe bağlı olarak) sıralama yapabilmelidir.

orderBy:myCalculatedValueFunction // will order in an ascending way based on a calculated value, for example calculating the total price of the object if it was an order or something 

: Ben de böyle bir işlevi orderBy biliyorum

“-creationDate” // descending ordering on creation date 
“customer.lastname” // ascending ordering on customers last name 

:

ben gibi nesnenin niteliğini geçen orderBy arkasında canByAnything değişken için bir dize kullanabilirsiniz biliyorum Ama bilmiyorum ve elde etmek istediğim:

  • Nasıl birleştirilir, böylece sıralama için işlev (ler) kullanabilirim n Nesnelerin nitelikleri/özellikleri ile kombinasyon. Diğerini, kullanıcının ne seçtiğine göre dinamik olarak söylüyorum. Hangi azalan veya artan bir özellik veya hesaplanmış bir değer olabilir. orderBy:dynamicOrderFunction gibi bir şeye Güncelleme orderBy:myCalculatedValueFunction

cevap

10

azalan bir şekilde hesaplanmış değeri sıralamak nasıl

  • :

    $scope.dynamicOrderFunction = function() { 
        if (orderByString) { 
         return '-creationDate'; 
        } 
        else { 
         return myCalculatedValueFunction; 
        } 
    } 
    

    orderBy da bir boolean kabul eder ve zaman true orderBy ters çevirecek bir 3 özelliği vardır. ($scope.reverseOrder = true; // or falseorderBy:dynamicOrderFunction:reverseOrder)


    düzenlemek

    Aslında bir fonksiyonu bir dize arasında bu şekilde orderBy değiştirmeye çalıştığından sorunlarla çalışacaktır. Çalışan bir dinamik sıralama fonksiyonu için this jsfiddle çıkışını yapın.

  • +0

    bu çok yararlı olur –

    0

    Yani kendi filtre oluşturmak zorunda ve içinde, google örnek ton var ne kadar istediğimiz yapmak.

    açısal özel filtre

    Tez son günlerini i filtreler yaratılması ile somes sorunlarla karşılaşabilirsiniz ve ben bulduk: Sadece arama ben hemen benim dependcies bunu ekledik https://github.com/a8m/angular-filter

    , biliyorum Yakında kullanacağım. Bu size de yardımcı olabilir. Sorununuzu çözmenize yardımcı olması durumunda cevabımı geçerli kılmayı unutmayın;)