2013-06-30 52 views
1

我正在使用jquery模板从WCF服务加载数据。见下面jquery模板不刷新数据

function loadTableDetails(id) { 

    var input = 
    { 
     Id: id, 
    }; 
    self.TableDetailList([]); 
    return $.ajax({ 
     url: "../Service/Table/TableList", 
     type: "PUT", 
     contentType: 'application/json', 
     processData: false, 
     data: JSON.stringify(input), 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      alert(errorThrown); 
     }, 
     success: function(allData) { 
      var mappedData = $.map(allData, function(item) { 

       return new TableDetailData(item); 
      }); 

      self.TableDetailList(mappedData); 
      $("#instructorTemplate").tmpl(self.TableDetailList()) 
            .appendTo("#instructorsList"); 


     } 
    }); 

} 

我将其绑定到查看类似下面

<table id="Table1" style="width: 100%;"> 
    <colgroup> 
     <col class="tblResultsCol1" style="width: 20px" /> 
     <col class="tblResultsCol2" style="width: 80px" /> 

     <col /> 
    </colgroup> 
    <script id="instructorTemplate" type="text/x-jquery-tmpl"> 

     <tr> 


      <td style="padding: 0px; text-align: left">${Id}</td> 
      <td style="padding: 0px;">${ListName}</td> 

     </tr> 
    </script> 

    <tbody id="instructorsList"> 
    </tbody> 
</table> 

我呼吁按钮的单击事件这个功能loadTableDetails并从选定的组合框项目通过ID码。它第一次正确加载数据。但是,当用户在combox中选择另一个项目时,它会将旧结果的数据添加到新结果中。总之,它不断添加以前结果的数据。在我再次致电服务之前,我还尝试清空可观察阵列self.TableDetailList([]),但它没有帮助。

任何想法?

回答

1

随着行

$("#instructorTemplate").tmpl(self.TableDetailList()) 
         .appendTo("#instructorsList"); 

你总是附加到现有的表,所以新的项目始终被添加到结束,旧的永远不会被删除的使用appendTo的。

所以,你需要先empty()你的目标,然后追加新的值:

$("#instructorsList") 
    .empty() 
    .append($("#instructorTemplate").tmpl(self.TableDetailList()); 

或者您使用html()方法来代替#instructorsList

$("#instructorsList") 
    .html($("#instructorTemplate").tmpl(self.TableDetailList()); 
+0

宾果游戏的全部内容。完美运作。万分感谢。我加载超过30K的记录,所以可以使用jQuery模板吗?它不需要太多时间来加载数据。 – DevelopmentIsMyPassion

+0

现在面临一个问题。当我加载我的表中的30K记录。滚动记录需要很多时间。我应该问一个新的问题吗? – DevelopmentIsMyPassion

+0

如果您遇到像这样的性能问题这样的新问题,通常的方法是提出一个新问题......但是30K有很多记录......并且可能存在很多潜在的原因,为什么它对您来说很慢。 – nemesv