数组过滤器返回数据的速度非常慢

时间:2013-08-12 12:10:15

标签: arrays wcf knockout.js wcf-rest

我正在使用knockout 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;
    }

   });
});

这是我的fiddle

当我选择选项按钮“全部”时,它将加载所有数据,如果我选择“已选择”,则它将过滤记录。现在,我的小提琴中没有太多记录,所以它的过滤速度非常快。 但在我的现实应用程序中,我有超过5000条记录,显示所有记录需要10秒钟。我的意思是我从我的服务加载数据并加载数据并选择选项按钮“全部”。 然后我选择“选择”选项按钮,在3-5秒内过滤记录。现在,当我再次单击“全部”选项按钮时,重新加载数据需要10秒钟。我怎么能提高速度。

我还阅读了问题here,但无法理解。

UPDATE1

我决定做服务器端分页。有人可以给我链接使用kogrid做服务器端分页吗?我正在使用WCF服务来检索数据。我是否需要在每次调用时将pagesize参数传递给服务。如果有任何使用kogrid和wcf服务的例子,请告诉我。

1 个答案:

答案 0 :(得分:0)

这里的链接可以帮到你..

Iterating through a list of users and pushing to an array in knockout

这是设置viewmodel以启用分页的方法。

这个链接在这里

Make a WCF Service Accept JSON Data from jQuery.AJAX()

可以帮助您获得WCF服务。当然,数据将是来自第一个链接的分页数据。