2013-06-07 22 views
6

W mojej aplikacji używam List.js do celów sortowania. Wszystkie wartości "łańcuchowe" działają poprawnie. Ale mam "zmodyfikowaną datę" w kolumnie.List.js - Według daty sortowania problemu

Kiedy klikam "zmodyfikowano według daty" - aby posortować, należy wziąć pod uwagę wartości daty, czyli tekst, np. 1/4/11 .. i odpowiednio sortować. z powodu tego podejścia otrzymuję błędne zamówienia sortowania.

jak mogę dokonać zamiast tego należy sortować według rzeczywistej wartości liczby, jakie są daty?

Oto mój kod:

new List('mfi-col2', { 
     valueNames: ['companyLegalName', 'phazeName', 'contactName', 'number', 'enrollId', 'accountType'] 
         }); 

Zamiast "number" to możliwe, aby wysłać $(".number").data-number? Więc niech używa znacznika czasu, który dostaję z serwera?

Czy ktoś może zaproponować alternatywę dla tej wtyczki?

+1

Czy na pewno chcesz korzystać z tej biblioteki? Ma 25 otwartych błędów, jest w wersji beta i miał ostatnie zatwierdzenie 9 miesięcy temu (z wyłączeniem tych dwóch żądań wycofania). – Stijn

+0

Po prostu stanąłem w obliczu tego samego problemu. Czy znaleziono jakieś rozwiązanie? Osoba, która utworzyła tę bibliotekę, znów jest aktywna. Po prostu zmienił interfejs strony kilka dni temu. Ale nie wiem, jak się z nim skontaktować. – MJoraid

Odpowiedz

6

Wiem, że to stare pytanie, ale ta odpowiedź może pomóc nowym osobom.

Associate data pole znaczniki czasu a następnie porównać/sort Sygnatury. To zależy od ciebie, ale jedną z sugestii byłoby dodanie go jako drugiego ukrytego pola na tym samym poziomie, na którym wyświetlasz każdą z dat, a następnie, gdy sortujesz, cały div/tr zostanie zrealizowany.

Oto przykład tego, co kiedyś:

Moja lista działa jak stół, a tu <td> jest pojemnik, c_start jest rzeczywista data wyświetlana, i pokazać, jak chcę (dd/mm/rrrr, dd-mm-rr) ponieważ jest to tylko wyświetlacz. Co do sortowania, używam c_start_ts i ukrywam go. w c_start_ts Umieściłem znacznik czasu o wartości, jest to idealny rodzaj. Nawet jeśli później chcesz zastosować filtrowanie, łatwiej będzie obsługiwać znaczniki czasu, ponieważ można je przekonwertować na rzeczywistą int.

<td class="xlarge-head "> 
    <span class="c_start">PUT FORMATTED DATE HERE</span> 
    <span class="c_start_ts hide">PUT TIME STAMP HERE</span> 
</td> 

Przykład

<td class="xlarge-head "> 
    <span class="c_start">01/01/2015</span> 
    <span class="c_start_ts hide">1420070400</span> 
</td> 

I wtedy przechodzić c_start_ts do list.js do sortowania, TD w tabeli dostanie sortowane.

Dopiero od niedawna zaczęto przyzwyczajać się do list.js, ma potencjał, ale przypuszczam, że później przejdzie do innej biblioteki.Nadzieję, że pomogłem :)

+0

FYI, musiałem zrobić to w ten sposób, aby działał z div:

1444262400 Oct. 8, 2015
Następnie przekazałem "datevar" jako jeden z valueNames w kodzie JS. – Eric

+0

Cieszę się, że moja odpowiedź pomogła, w twojej metodzie, wydaje się, że umieściłeś zarówno wyświetlaną (sformatowaną) datę, jak i znacznik czasu na tym samym poziomie w obrębie tego samego rodzica. – MJoraid

+0

Tak, zgadza się. – Eric

7

Można użyć danych atrybutu, TOO:

js

valueNames: ['date', { name: 'timestamp', attr: 'data-timestamp' } 

HTML

<td class="date timestamp" data-timestamp="1427713871">30/03/2015</td> 

Teraz jesteś w stanie sortuj za pomocą znacznika czasu bez drugiego lub ukrytego pola.

+0

Dobre rozwiązanie. Nie wiedziałem, że list.js może akceptować atrybuty danych. – MJoraid