0

ノックアウト arrayfilter を使用してアイテムをフィルタリングしています。ただし、1000 を超えるレコードがある場合は、データが非常に遅く返されます。私はそれのために何をすべきですか?これが私の方法です

viewModel.filteredData = ko.computed(function () {
var str = "<temp>";
if (viewModel.selection() == "All") return viewModel.dataOne();
return ko.utils.arrayFilter(viewModel.dataOne(), function (data) {
    stringFromArray = data.display;
    if (stringFromArray.indexOf(str) == 0) {
        return true;
    }

   });
});

これが私のフィドルです

オプションボタン「すべて」を選択すると、すべてのデータがロードされ、「選択済み」を選択すると、レコードがフィルタリングされます。現在、フィドルにはあま​​りレコードがないため、フィルタリングはかなり高速です。しかし、私の実際のアプリケーションでは、5000 を超えるレコードがあり、すべてのレコードを表示するのに 10 秒かかります。つまり、サービスからデータをロードすると、データがロードされ、オプションボタン「すべて」が選択されます。次に、3〜5秒でレコードをフィルタリングする「選択済み」オプションボタンを選択します。「すべて」オプションボタンをもう一度クリックすると、データのリロードに10秒かかります。どうすれば速度を改善できますか。

ここで質問についても読みましたが、理解できませんでした。

アップデート1

サーバー側のページングを行うことにしました。kogrid を使用してサーバー側のページングを行うためのリンクを教えてもらえますか? WCF サービスを使用してデータを取得しています。呼び出されるたびにページサイズパラメータをサービスに渡す必要がありますか。wcf サービスで kogrid を使用する例があれば教えてください。

4

1 に答える 1

0

ここのこのリンクがあなたを助けるかもしれません..

ユーザーのリストを繰り返し処理し、ノックアウトで配列にプッシュする

これは、ビューモデルを設定してページングを有効にする方法です。

そして、このリンクはこちら

WCF サービスが jQuery.AJAX() から JSON データを受け入れるようにする

WCF サービスを機能させるのに役立ちます。もちろん、データは最初のリンクからのページング データです。

于 2013-08-14T16:51:54.823 に答える