【发布时间】:2012-10-17 06:37:19
【问题描述】:
我有一张由 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 函数。
【问题讨论】:
标签: knockout.js knockout-mapping-plugin