我可以创建一个包含多行的模板,不需要用tbody
元素包裹吗?我无法使用tbody
,因为它会重置我拥有的任何rowpan元素。
这是我到目前为止所拥有的:
ko.applyBindings();

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script type="text/html" id="template1">
<tr>
<td>Hello</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>World</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</script>
<table>
<tr>
<td rowspan='3'>Menu</td>
<th>Header</th>
<td>one</td>
<td>two</td>
<td>three</td>
<td>four</td>
</tr>
<tr data-bind="template: { name: 'template1'}"></tr>
</table>
&#13;
答案 0 :(得分:2)
无容器绑定就是答案。
而不是:
<tr data-bind="template: { name: 'template1'}"></tr>
我需要:
<!-- ko template: { name: 'template1'}--><!-- /ko -->
答案 1 :(得分:0)
如果只在DOM中的一个地方使用,不需要模板;你可以直接在你迭代行的地方做到这一点:
var ViewModel = function() {
var self = this;
self.entries = [{
name: "one",
type: 'file'
}, {
name: "two",
type: 'folder'
}, {
name: "three",
type: 'file'
}];
};
ko.applyBindings(new ViewModel());
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<table>
<tbody data-bind="foreach: entries">
<tr>
<td> <span data-bind="text: name"></span>
</td>
</tr>
</tbody>
</table>
&#13;