Knockout是否有分隔符模板?

时间:2011-05-11 13:00:06

标签: knockout.js

这样绑定时:

<div data-bind='template: { name: "personTemplate",
                            foreach: someObservableArrayOfPeople }'> 
</div>

是否可以指定某种分隔符模板,类似于Classic ASP.NET中的分隔符模板?

2 个答案:

答案 0 :(得分:3)

目前没有办法指定分隔符模板。

但是,我认为有几个选择:

  • 将内容包含在“personTemplate”
  • 使用包装器模板呈现personTemplate,然后使用 separatorTemplate并从模板绑定指向它(如果需要,可以重用分隔符模板)
  • 使用模板绑定的afterRender选项插入内容。

答案 1 :(得分:1)

如果您的需求更具表现力,那么行为(即仅限风格分隔符),并且您不需要支持古老的浏览器,您应该考虑CSS是否可以解决问题。

想象一下KO生成的DOM如下所示:

<div data-bind="template: bla bla">
    <div class="tmpl">template instance 1</div>
    <div class="tmpl">template instance 2</div>
    <div class="tmpl">template instance 3</div>
    <div class="tmpl">template instance 4</div>
</div>

您可以使用::after伪类插入“分隔符”,然后将其关闭以显示最后一个元素。

.tmpl::after {
    content:'';
    display:block;
    background-color: silver;
    height: 2px;
    margin:5px 0;
}

.tmpl:last-child::after {
    display: none;
}

根据你的使用情况,你可以在CSS中使用生成的块做很多事情,而且总是在你可以剪切一些JS并放入CSS的好日子;)

Exxple fiddle http://jsfiddle.net/RTD7q/