我有类似于以下 html 的内容:
<table>
<tbody data-bind="foreach: { data: items, afterRender: alternateRowColor }">
<!-- ko if: isNew() -->
<tr>
<td><input data-bind="text: prop"/></td>
</tr>
<!-- /ko -->
<!-- ko if: !isNew() -->
<tr>
<td data-bind="text: prop"/></td>
</tr>
<!-- /ko -->
</tbody>
</table>
具有如下定义的对象集合:
function NewItem() {
this.prop = ko.observable(0);
this.isNew = ko.observable(true);
}
function Item(prop) {
this.prop = prop;
this.isNew = ko.observable(false);
}
“项目”来自服务器,“新项目”是在用户单击链接时添加的。这个想法只是为新项目提供一个输入框,而只是现有项目的显示。这似乎适用于现有项目(当 isNew 为 false 时),但当 isNew 为 true 时,两组标记都呈现(添加了两行,一个可编辑,然后一个仅显示)。如果 isNew 为真,我希望只呈现第一个“tr”。有谁知道这里发生了什么?