3

我使用淘汰赛 foreach 绑定来填充 UL。每次滚动到最后,我都会获取接下来的 25 个项目并将其添加到 UL。在 Chrome(最好的)和 Firefox(稍微慢一点)中,一切都运行得非常快,但 IE 10 显示与 Chrome 相同的数据需要大约 8 倍。要显示所有绑定的所有数据,Chrome 需要大约 50 毫秒。IE 需要将近 400。

有什么方法可以加快 IE 渲染速度?是否有某种方法可以手动插入项目并应用绑定,如果它可以使其更快。

我知道我不会从列表中删除任何元素。我只能替换整个列表。有什么办法可以利用它作为优势吗?

这是有约束力的

  <ul class="items-list"
            data-bind="foreach: items>
 <li>
  ....
 </li>
 </ul>

我用这个添加项目

self.items.push.apply(self.items, newItems); --items are observableArray
4

1 回答 1

4

可以让您在 Chrome 和 IE 中得到提升的一件事是剥离“模板”周围的文本节点。所以,而不是:

<ul data-bind="foreach: items">
    <li data-bind="text: name"></li>
</ul>

做:

<ul data-bind="foreach: items"><li data-bind="text: name"></li></ul>

重要的部分是顶级节点,而不是子节点内部的任何东西。现在li是唯一的节点,而不是它和两个文本节点。这将允许 KO 在处理“模板”时做更少的工作。

于 2013-06-27T17:18:39.183 回答