0

現在、KnockoutJS 2.1.0 を使用して、仮想タグ foreach を持つデータを次の形式で表示しています。

<!-- 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;
    });
}

この関数は、どのブラウザーでもエラーを起こしません。

ご覧のとおり、配列を返す関数ですfilteredCertificatesko.computed()すべての主要なブラウザーでは完全に機能しますが、IE8 (驚き) では、バインドされたデータではなく、生のコンテンツのみで余分な行が追加されます。たとえば、最後の raw には、実際には値として "TITLE"、"NAME"、および "VORNAME" があります。空のフィールドのままにしておくこともできますが、その内容が空の場合でも行が追加されます。

仮想タグを使用するのが本当に好きです。foreach をラップする dom 要素を使用せずにこれを修正する方法はありますか?

4

1 に答える 1

0

しばらくデバッグした後、IEがアプリケーションの読み込みを停止することを決定したときに、この現象が発生したことに気付きました。これは、アプリケーションが辛抱強くなくなったか、JavaScriptを接続する小さなサルが手間がかかりすぎると判断したためです。

解決策は、DOMペインティングに永遠に時間がかからないようにアプリケーションを最適化するか、クライアントがIE8を使用しないようにPaulIrishに祈ることです。

于 2013-02-01T18:07:34.553 に答える