0

そのため、子要素を持つ可能性のあるいくつかのオブジェクトで再帰を行うために使用しているテンプレートがあります。私は、ifステートメントが私が望むように機能しています(私は思う)。ただし、if ステートメントの前に余分な li がある場合にのみ、子要素が表示されます。

これが私のテンプレートです

<script type="text/html" id="journalTemplate">
<li data-bind="text: Description">
    <div>
    <li data-bind = "visible: IsGroup"></li>
    <!-- ko if: IsGroup -->
    <ol data-bind="template: {name: 'journalTemplate', foreach: ChildEntities}">
    </ol>
    <!-- /ko -->
    </div>
</li>

私は配列マッピングを使用しているので、表示する実際のビュー モデルはありませんが、C# オブジェクトは非常に単純です。説明、bool IsGroup、および ChildEntities のリスト (IsGroup が false の場合は null です) があります。ノート)。空の li がない場合、if ステートメントのコメント ブロックも表示されません。

何か案は?

4

1 に答える 1

1

問題が発生しました。問題は、LI のテキスト バインディングです。

HTML のテキストは、html マークアップで明示的に記述できませんが、同じように動作する textNode dom 要素によって表されます。事実上、テキスト バインディングは、LI の innerHtml をそれが持つテキストに置き換えています。

私がよくわかっていないのは、余分な無効な LI 要素が innerHtml の完全な置換を停止する理由です...

とにかく、正しい解決策は、テンプレートをこのように構成することです。

<script type="text/html" id="journalTemplate">
    <li>
        <span data-bind="text: Description"></span>
        <!-- ko if: IsGroup -->
        <ol data-bind="template: {name: 'journalTemplate', 
                  foreach: ChildEntities}">
        </ol>
        <!-- /ko -->
    </li>
</script>

http://jsfiddle.net/madcapnmckay/F2vSW/1/

お役に立てれば。

于 2012-05-22T18:37:26.397 に答える