template绑定经过模板将数据render到页面。模板绑定对于构建嵌套结构的页面很是方便。默认状况, Knockout用的是流行的jquery.tmpl模板引擎。使用它的话,须要在安装页面下载和引用jquery.tmpl和jQuery框架。或者你也能够集成其它的模板引擎(虽然须要了解Knockout 内部知识才行)。javascript
参数html
主参数java
语法快速记忆:若是你声明的仅仅是字符串(上个例子),KO会使用模板的ID来render。应用在模板上的数据是你的整个view model对象(例如ko.applyBindings 绑定的对象)。jquery
更多控件,你能够传带有以下属性的JavaScript对象:app
一般, 当您使用控制流绑定 (foreach, with, if
等) 时, 不须要为模板命名: 它们是由 dom 元素中的标记以隐式和匿名方式定义的。可是, 若是须要, 能够将模板分解为一个单独的元素, 而后按名称引用它们:
<h2>Participants</h2> Here are the participants: <div data-bind="template: { name: 'person-template', data: buyer }"></div> <div data-bind="template: { name: 'person-template', data: seller }"></div> <script type="text/html" id="person-template"> <h3 data-bind="text: name"></h3> <p>Credits: <span data-bind="text: credits"></span></p> </script> <script type="text/javascript"> function MyViewModel() { this.buyer = { name: 'Franklin', credits: 250 }; this.seller = { name: 'Mario', credits: 5800 }; } ko.applyBindings(new MyViewModel()); </script>
在该示例中 ,person-template
标记被使用两次 : 一次用于buyer
一次 , 和seller
。注意 , 模板标记包裹在<script type="text/html">
— —type="text/html"
属性是必需的, 以确保标记不会以 javascript 的形式执行, 而且出于将绑定应用于该标记, 除非它用做模板。
若是须要为集合里的每个item render一次模板:
<h2>Participants</h2> Here are the participants: <div data-bind="template: { name: 'person-template', foreach: people }"></div> <script type="text/html" id="person-template"> <h3 data-bind="text: name"></h3> <p>Credits: <span data-bind="text: credits"></span></p> </script> <script> function MyViewModel() { this.people = [ { name: 'Franklin', credits: 250 }, { name: 'Mario', credits: 5800 } ] } ko.applyBindings(new MyViewModel()); </script>
使用foreach
,这提供了与直接在每一个元素中嵌入匿名模板相同的结果, 即:
<div data-bind="foreach: people"> <h3 data-bind="text: name"></h3> <p>Credits: <span data-bind="text: credits"></span></p> </div>