我正在尝试创建一个表,利用 Knockout,我可以在其中选择一个,在所选行下方插入一些功能,做一些事情,并能够删除插入的行。我实际上可以让行插入正常工作,但是失去了绑定到循环项的父项的功能。
HTML 看起来像这样:
<table data-bind="visible: currentRecord() === null">
<thead>
<tr>
<th></th>
<th>Name</th>
<th>Affiliation</th>
<th></th>
</tr>
</thead>
<tbody data-bind="template: {name: 'row-template', foreach: records}">
</tbody>
</table>
我使用两个模板(一个用于单行,一个用于包含单行的行)
<script id="row-template" type="text/html">
<tr class="actual-row">
<td class="ui-icon ui-icon-circle-arrow-e" data-bind="insertRow: {
templateName: 'custom-template',
rowIdentifier: 'extra-content',
singleRowTemplate: 'row-template',
data: $data}">
<input type="hidden" data-bind="value: Id" />
</td>
<td data-bind="text: Name"></td>
<td data-bind="text: Affiliation"></td>
<td><a href="#" data-bind="click: $root.clickMe">Click Me!</a>
</tr>
</script>
<script id="custom-template" type="text/html">
<!-- ko template: { name: 'row-template' } -->
<!-- /ko -->
<tr id="extra-content">
<td colspan="4" >
<div>You have: <input type="number" data-bind="value: currentAmount, valueUpdate: 'keypress'" /> </div>
<div>You need <strong data-bind="text: Max - currentAmount()" > </strong> more</div >
</td>
</tr>
</script>
在创建过程中,绑定是完美的。我可以点击点击我!锚就好了。但是,当我执行代码以插入行时,它会运行一个自定义绑定处理程序,该处理程序调用
ko.renderTemplate(value.templateName, value.data, {}, cell.parent(), "replaceNode");
在哪里
- value 是传入 insertRow bindingHandler 的 JS 对象
- cell 是单击以插入/删除特殊行的 TD 元素的 jQuery 对象。
我怀疑个人记录与其父记录之间的关系丢失了,我不知道如何利用它。谁能帮我?
我有一个小提琴,我一直在这里玩。