javascript - 如何在单独的 'thread' 中或异步应用模板绑定(bind)?

标签 javascript knockout.js knockout-2.0

不知道是否可能,因为我在网上找不到任何东西。 我有一个 KO 模板,大约有 100 条记录。

在 IE 8 中(由于其 JS 引擎不是最优的),页面加载大约需要 15 秒。 在 Firefox 中,大约需要 6 秒。

我已经确认,在 IE 中,ko.applyBindings 会损失大约 5 秒。

有没有办法异步应用绑定(bind)?也许有一个加载图标,以便用户可以在 KO 处理模板时继续使用该页面。

最佳答案

我也遇到了类似的问题。 setTimeout 是您需要在此处使用的。在我的应用程序中我:

  1. 初始化一个空的(或相当空的)viewModel
  2. 应用绑定(bind)(由于模型上的依赖属性指示所有数据是否已加载,因此显示“请稍候...”消息)。
  3. 将数据 block 添加到 viewModel 中(我假设您有一个可观察数组,其中包含大部分数据,因此您只需一次将 10 个项目推送到可观察数组中)

这是让我使用 jsFiddle 展示如何在绑定(bind)中使用 setTimeout 的答案:

Show progress bar while knockout is rendering the view

关于javascript - 如何在单独的 'thread' 中或异步应用模板绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582680/

相关文章:

javascript - 处理多于一个字符的输入

c# - 为 htmlAttributes 提供值,其中键在 MVC View 中的名称中包含破折号(例如 "data-bind")

javascript - 如何在数组内的索引中添加元素? ReactJs

javascript - 在 ES6 中扩展一个 String 类

javascript - 检查 knockout 绑定(bind)何时完成

knockout.js - knockout 验证: Dynamic constraints

knockout.js - knockout : Complex binding with observable arrays and checkboxes

javascript - 在 knockout 上制作仅输入数字类型

javascript - 如何将 d3.js v5 模块导入 polymer 3 元素?

javascript - knockout 字符串格式模式