KnockoutJS虚拟标签Foreach IE8附加了额外的行

时间:2013-02-01 13:39:15

标签: javascript knockout.js

我目前正在使用以下形式的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(惊喜)中,它附加了一个额外的行,没有绑定数据,只是原始内容。例如,最后一个原始实际上有“TITLE”,“NAME”和“VORNAME”作为值。我可以把它们留空,但即使它的内容是空的,它仍会附加一行。

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

1 个答案:

答案 0 :(得分:0)

经过一段时间的调试后,我意识到当IE决定停止加载您的应用程序时会出现这种现象,因为它要么用完了,要么用小插件将javascript连接在一起就认为这太麻烦了。

解决方案是优化您的应用程序,以便DOM绘画不会永远消失或向Paul Irish祈祷您的客户不会使用IE8,无论诀窍如何。