2013-06-07 50 views
6

Trong ứng dụng của tôi, tôi đang sử dụng List.js cho mục đích sắp xếp. Tất cả các giá trị "chuỗi" đang hoạt động tốt. Nhưng tôi có "ngày sửa đổi" trong cột.List.js - Theo vấn đề sắp xếp ngày

Khi tôi nhấp vào "sửa đổi theo ngày" - để sắp xếp, đây chỉ là xem xét các giá trị ngày có nội dung, ví dụ: 1/4/11 .. và sắp xếp tương ứng. vì cách tiếp cận này, tôi nhận được lệnh sắp xếp sai.

làm cách nào tôi có thể thực hiện thay vào đó nên sắp xếp theo giá trị thực của số của ngày đó?

Đây là mã của tôi:

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

Thay vì "number" là nó có thể gửi $(".number").data-number? Vì vậy, hãy để nó sử dụng dấu thời gian mà tôi nhận được từ máy chủ?

Hoặc bất kỳ ai cũng có thể đề xuất giải pháp thay thế cho plugin này?

+1

Bạn có chắc chắn muốn sử dụng thư viện này không? Nó có 25 vấn đề mở, đang trong giai đoạn thử nghiệm và có cam kết cuối cùng 9 tháng trước (không bao gồm hai yêu cầu kéo). – Stijn

+0

Chỉ cần đối mặt với cùng một vấn đề. Có giải pháp nào được tìm thấy không? Người đã tạo lib này hoạt động trở lại. Anh ấy vừa thay đổi giao diện trang web cách đây vài ngày. Nhưng không chắc chắn làm thế nào để liên lạc với anh ta. – MJoraid

Trả lời

6

Tôi biết đây là câu hỏi cũ nhưng câu trả lời này có thể giúp người mới.

Liên kết trường ngày của bạn với Dấu thời gian và sau đó so sánh/sắp xếp Dấu thời gian. Đó là tùy thuộc vào bạn, nhưng một gợi ý sẽ là thêm nó vào trường ẩn thứ hai ở cùng một cấp nơi bạn hiển thị từng ngày, sau đó khi sắp xếp, toàn bộ div/tr sẽ được thực thi.

Dưới đây là một ví dụ về những gì tôi đã sử dụng:

danh sách của tôi đang làm việc như một bảng, và ở đây <td> là container, c_start là ngày thực tế được hiển thị, tôi thấy nó như là tôi muốn (dd/mm/yyyy, dd-mm-yy) vì nó chỉ hiển thị. Đối với việc phân loại, tôi sử dụng c_start_ts và ẩn nó đi. trong c_start_ts Tôi đặt dấu thời gian giá trị, đó là một loại hoàn hảo. Ngay cả khi sau này bạn muốn áp dụng tính năng lọc, việc xử lý dấu thời gian sẽ dễ dàng hơn vì nó có thể được chuyển đổi thành một int thực.

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

Ví dụ

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

Và sau đó tôi vượt qua c_start_ts đến list.js để sắp xếp, các td trong bảng sẽ được sắp xếp.

Chỉ gần đây mới bắt đầu quen với list.js, nó có tiềm năng, nhưng dự đoán sau sẽ chuyển sang lib khác.Hy vọng tôi đã giúp :)

+0

FYI, tôi phải thực hiện theo cách này để làm việc với các div:

1444262400 Oct. 8, 2015
Sau đó, tôi đã chuyển 'datevar' làm một trong các giá trịNames trong mã JS. – Eric

+0

Rất vui được trả lời của tôi đã giúp, theo phương pháp của bạn, có vẻ như bạn đã đặt cả ngày hiển thị (đã định dạng) và dấu thời gian ở cùng cấp trong cùng một bậc cha mẹ. – MJoraid

+0

Yup, đúng vậy. – Eric

7

Bạn có thể sử dụng một dữ liệu thuộc tính, quá:

js

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

html

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

Bây giờ bạn có thể sắp xếp thông qua dấu thời gian không có trường thứ hai hoặc ẩn.

+0

Giải pháp tốt. Tôi không biết rằng list.js có thể chấp nhận các thuộc tính dữ liệu. – MJoraid

Các vấn đề liên quan