【发布时间】:2011-12-14 19:21:03
【问题描述】:
我注意到 Knockout 的模板渲染中有一个奇怪的行为。
我有一个简单的 Knockout 示例...
var viewModel = {
stuff : ko.observable([{ id : 1, name : 'Thing'},
{ id: 2, name : 'Thingier' },
{ id : 3, name : 'Thingiest' }]),
render: function(el){
console.log(el);
}
}
$(function(){
ko.applyBindings(viewModel);
});
还有 HTML...
<ul data-bind="template: { name: 'thingTemplate',
foreach: stuff,
afterRender: render }">
</ul>
<!--
<script id="thingTemplate" type="text/html">
<li>
<span data-bind="text: name"></span>
</li>
</script>-->
<script id="thingTemplate" type="text/html">
<span data-bind="text: name"></span>
</script>
当使用当前被注释掉的模板调用渲染函数时,我得到一个jQuery(li)的console.log。
当使用当前模板调用 reunder 函数时,我得到 jQuery(Comment { length=0, nodeName="#comment", nodeType=8, more...}, span)。
那个评论节点是怎么回事?
这是工作小提琴...http://jsfiddle.net/jcreamer898/fqrv7/
【问题讨论】:
-
不是不行,而是传给render函数的el有html注释和渲染的span标签。
标签: knockout.js