如何编写扩展到多个元素的模板?

时间:2011-09-27 17:00:06

标签: knockout.js

我想写一个knockout.js模板,它应该扩展为一组表格单元格。换句话说,比如:

<tr>
    <td>Cell one</td>
    <td>Cell two</td>
    <div data-bind="template: ..."></div>
    <td>Cell six</td>
</tr>
<script id="..." type="text/html">
    <td>Cell three</td>
    <td>Cell four</td>
    <td>Cell five</td>
</script>

但是tr中不允许使用div标签,当然,我无法弄清楚是否有任何方法可以使用模板扩展来替换div标签,而不是将扩展嵌套在div中。 / p>

有人知道实现这个目标的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用新的“无容器”模板执行此操作:

<tr>
<td>Cell one</td>
<td>Cell two</td>    
<!-- ko foreach: names -->
    <td>Cell three<span data-bind="text: name"></span></td>
    <td>Cell four</td>
    <td>Cell five</td>
<!-- /ko -->
<td>Cell six</td>

用这样的js:

$(function() {
var viewModel = {
    names: ko.observableArray([ { name: "Bob"}, {name: "John"}])
};
ko.applyBindings(viewModel);

});

这是一个jsfiddle,它显示了它的实际效果:jsfiddle

这是一个jsfiddle,显示没有 foreach:jsfiddle