1

DateTime 行を持つ KoGrid があります。そして、この行をソートする機能が必要です。文字列の代わりに DateTimes を比較するためのカスタム sortFn 関数を実装しようとしています。しかし、それは正しく動作しません (2017 年 3 月 3 日 02:20 PM は 2016 年 4 月 31 日 02:20 PM より上)

  sortFn:function (a, b) {
           var a1 = moment(a,"'DD/MM/YYYY hh:mm A").format("YYYY-MM-DD HH:mm");
           var b1 = moment(b,"'DD/MM/YYYY hh:mm A").format("YYYY-MM-DD HH:mm");
                return (a1 > b1);
                }

https://jsfiddle.net/L681pgny/

どうすれば修正できますか?また、どのように sortFn 関数をデバッグできますか?

追加の質問: 現在、並べ替え機能は現在のページでのみ機能しています。すべてのページのすべてのアイテムを並べ替えて、ページ上の 5 つの一致するアイテム (上記の jsfiddle の例の場合) を表示することは可能ですか?

4

2 に答える 2

0

sort 関数は、それらが同じ場合、1 または -1 または 0 を返す必要があります。1 と 0 のみを返します。

sortFn:function (a, b) {
  var a1 = moment(a,"'DD/MM/YYYY hh:mm A");
  var b1 = moment(b,"'DD/MM/YYYY hh:mm A");
  return a1.isBefore(b1) ? 1 : -1;}
于 2016-04-01T13:30:47.597 に答える
0
  • モーメントを文字列に変換する形式を使用する場合は、その部分を省略します。
  • 十分に文書化されていませんが、正しく動作するには、sortFn が 1 または -1 を返す必要があるようです

これはあなたのsortFnが含むべきものです

var a1 = moment(a,"'DD/MM/YYYY hh:mm A");
var b1 = moment(b,"'DD/MM/YYYY hh:mm A");

return a1>b1?1:-1;
                

動作中のフィドルを確認する

于 2016-04-01T13:29:48.483 に答える