我有一张由 Knockout 渲染的表格
<table data-bind="visible: program">
<thead>
<tr>
<td>Post</td>
<td>Name</td>
<td>Odds</td>
<!--ko foreach: options -->
<td data-bind="visible: value, text: name"></td>
<!-- /ko -->
</tr>
</thead>
<tbody data-bind="foreach: program() ? program().item: []">
<tr>
<td>
<span data-bind="text: place"></span>
</td>
<td><span data-bind="text: name"></span></td>
<td><span data-bind="text: odd"></span></td>
<!--ko foreach: $parent.options -->
<td data-bind="visible: value">
<span data-bind="text: $parent[prop]"></span></td>
<!-- /ko -->
</tr>
</tbody>
</table>
该表是根据我拥有的可观察的(程序)呈现的。'程序通过ajax调用更新,然后赋值(program(ko.mapping.fromJS(prg)))。
程序有一个项目数组,项目数量大小不一,但每个项目总是有需要的字段。
我想有一种方法可以设置它,以便 Knockout 只渲染新事物。
例如,如果我当前的程序中有 6 个项目,则创建一个有 6 行的表,如果我得到一个不同的程序,其中也有 6 个项目,那么该表实际上不应该重新渲染该表,只需使用已经存在的内容。如果那时我有一个 7 项程序,它只会呈现它需要的单行。如果有 5 个项目在之后的一个中出现,它会简单地删除它不使用的 2 个
这听起来可能吗?还是我不在基地?** 此外,为了方便起见,我上面的示例已被简化,该表还包含一些 ko.computed 函数。