IE的速度更快

时间:2013-06-27 15:47:04

标签: internet-explorer knockout.js knockout-2.0 ko.observablearray

我使用敲除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

1 个答案:

答案 0 :(得分: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在处理“模板”时能够减少工作量。