0

我目前正在使用 KnockoutJS 2.1.0 以以下形式显示一些带有虚拟标签的数据:

<!-- ko foreach:filteredCertificates-->
<div>
  <span data-bind="html:titel">TITEL</span>
  <span data-bind="html:name">NAME</span>
  <span data-bind="html:vorname">VORNAME</span>
</div>
<!-- /ko -->

filteredCertificates看起来像这样:

self.filteredCertificates = ko.computed(function() {
    return ko.utils.arrayFilter(self.certifiedEntries(), function(certificate) {
      return certificate.isDeutsch;
    });
}

该函数在任何浏览器中都没有任何错误。

如您所见,filteredCertificates是一个ko.computed()返回数组的函数。在所有主流浏览器中,它都能完美运行,但在 IE8(惊喜)中,它附加了一个额外的行,没有绑定数据,只有原始内容。例如,最后一个 raw 实际上具有“TITLE”、“NAME”和“VORNAME”作为值。我可以将它们留空,但即使其内容为空,它仍会追加一行。

我真的很喜欢使用虚拟标签,有没有办法解决这个问题而不必使用包装 foreach 的 dom 元素?

4

1 回答 1

0

经过一段时间的调试,我意识到当 IE 决定停止加载您的应用程序时出现了这种现象,因为它要么耗尽了耐心,要么将 javascript 插入在一起的小猴子认为它的工作量太大。

解决方案是优化您的应用程序以使 DOM 绘制不会永远持续下去,或者向 Paul Irish 祈祷您的客户端不使用 IE8,不管有什么诀窍。

于 2013-02-01T18:07:34.553 回答