我正在尝试使用从 Web 服务获得的数据使用 knockout.js 绑定下表。一般工作,但我想解决 3 件事:
当我进行 AJAX 调用并且数据返回时,我需要先清除表
ko.applyBindings(msg);
。现在它只是不断地添加和添加。我有 100 个测试对象,添加 200/300 后它变得越来越慢。我希望表可能包含 300 条记录.. 编辑!实际上,它似乎为每行创建了另外 100 行。所以,第一次调用 100 行,第二次调用 10000 行..
为了绑定,我必须指定第一行。它在页面加载时显示,我如何摆脱这一行?
HTML:
<table id="mainTable" class="paddedTable">
<thead>
<tr>
<th style="width: 70px;">Trip No</th>
<th style="width: 26px;"><img src="/images/attachment_header.png" alt="Attachments"/></th>
<th style="width: 70px;">PO No</th>
<th style="width: 70px;">BOL No</th>
<th style="width: 70px;">Shipper No</th>
<th style="width: 100px;">From</th>
<th style="width: 100px;">To</th>
<th style="width: 100px;">Scheduled Pickup</th>
<th style="width: 100px;">Scheduled Delivery</th>
<th style="width: 120px;">Status</th>
<th style="width: 40px;"> </th>
</tr>
</thead>
<tbody data-bind="foreach: d">
<tr class="dataRow">
<td data-bind="text: TripId"></td>
<td><img src="/images/pdf_icon24.png" alt="PDF Document"/></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>tracking stuff</td>
<td><a href="#" class="infoLink"><strong>Info</strong></a></td>
</tr>
</tbody>
脚本:
function onRefreshButtonClick() {
$.ajax({
type: "POST",
url: "/Customer/TrackShipment.aspx/GetShipments",
data: "{ dateFrom: '" + $("#FromDateTextBox").val() + "', dateTo: '" + $("#ToDateTextBox").val() + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var a = msg.d;
ko.applyBindings(msg);
//
}
});
}