0

以下の例では、複数のゲストを追加してから最初のゲストを削除すると、Guest[] が空でなくても、ゲスト テーブル全体が消えて再表示されません。{^{if}} ここまたは私のコードに何か問題がありますか? (コミット34を使用しています)

<div id="frm-reg"></div>

<script id='jsr-registration' type='text/x-jsrender'>

    <p><button id="btn-addGuest">Add Guest</button></p>

    {^{if Guests.length}}
        <table>
            <tr>
                <th>First Name</th> 
                <th>Last Name</th>
                <th>Age</th>
                <th></th>
            </tr>
            {^{for Guests}}
                <tr>
                    <td><input data-link="FirstName" type="text" /></td>
                    <td><input data-link="LastName" type="text" /></td>
                    <td><input data-link="Age" type="text" /></td>
                    <td><button class="btn-remove">Remove</button></td>
                </tr>
            {{/for}}
        </table>
    {{/if}}
</script>

<script>
    var model={"CampID":3,"FirstName":"a","LastName":"b","Guests":[]};

    $.templates({regTmpl: "#jsr-registration"});
    $.link.regTmpl("#frm-reg", model)
        .on("click", ".btn-remove", function() 
        {
            $.observable(model.Guests).remove( $.view(this).index, 1 );
            return false;
        });

    $("#btn-addGuest").click(function()
    {
        $.observable(model.Guests).insert(model.Guests.length, {FirstName:"", LastName:"", Age:""});
        return false;
    });
</script>
4

1 に答える 1

3

これは<tbody>、マークアップにタグがないためです。

JsViews データバインディングで使用される JsRender テンプレートでタグを使用する場合<table>は、常に<tbody>タグを含めることを覚えておく必要があります。いずれにせよ、ブラウザーはそれを挿入し、JsViews の解析は、正しくない要素の深さ情報で終了します。

このため、JsViews パーサーに警告エラー メッセージを追加します。

于 2013-04-02T23:20:26.927 に答える