javascript - 绑定(bind)海量数据时Knockout速度慢

标签 javascript html knockout.js

我正在使用 knockout 来呈现大量数据。 (35000条记录) 我无法使用lazyload请求,通过服务器传递,我在浏览器中有数据。

如果我在 ViewModel 中使用 observableArray,浏览器会卡住大约 10 秒,然后再显示绑定(bind)结果。

var vm = function () { 
      var ar = [];
      for (var i=0; i<35000; i++){ 
           ar.push(i);
      }
      this.SelectedElementsListData = ko.observableArray(ar);
}
ko.applyBindings(vm());

使用此 HTML 绑定(bind)

<div data-bind="foreach:SelectedElementsListData" class="scrolling">
     <div data-bind="text:$data"></div>
</div>
<div data-bind="event: { click: fill }">
     CLICK HERE TO START
</div>

这是所需结果的原型(prototype)

https://jsfiddle.net/RobertoSerafin/4axdwkfo/

我的问题是:

如何制作通用的customBinding,以使foreach绑定(bind)更加狡猾,并仅将渲染应用于ArrayItems的部分列表,并使用div滚动仅“onDemand”渲染div,当用户滚动 div 时。

最佳答案

您可以尝试就地替换已使用的绑定(bind)处理程序并尝试 https://github.com/brianmhunt/knockout-fast-foreach ,但对于这么多的项目,我认为这还不够。

您需要的是分页或虚拟化列表。后者是您在上一段中描述的。以此作为搜索词,应该很容易找到解决方案。

关于javascript - 绑定(bind)海量数据时Knockout速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430263/

相关文章:

Javascript,变量无法通过函数访问

jquery - knockout 无法让过渡发挥作用

javascript - Knockout observablearry 不具有约束力

javascript - Google Maps API - 根据英里计算缩放

javascript - 使用 RSelenium 和 rvest 抓取动态 Javascript 页面

javascript - AJAX 调用返回数据但失败

knockout.js - Breezejs - 查询本地缓存的模式

javascript - 以编程方式触发事件进入 $timeout 导致无限循环

html - 新部分出现在另一个设置为 float 的部分下

html - Woocommerce - 将每行的单个产品更改为多个(移动响应)