ノックアウト 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 を使用する例があれば教えてください。