2013-04-02 52 views
0

在下面的示例中,如果我添加了多個guest虛擬機,然後刪除了guest虛擬機,則guest虛擬機表將消失,即使Guest []不爲空也不會再次出現。在這裏或我的代碼中是否有{^ {if}}錯誤? (我正在使用提交34)可能與{^ {if}}的jsviews錯誤

<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> 

回答

3

這是標記中沒有<tbody>標記的結果。

當您在JsRender模板中使用<table>標籤,與JsViews數據綁定一起使用時,您需要始終記住包含<tbody>標籤。無論如何,瀏覽器會插入一個,然後JsViews解析會以不正確的元素深度信息結束。

我將在JsViews解析器中爲此添加警告錯誤消息。

+0

優秀。謝謝鮑里斯。 – CHS