我目前正在使用jQuery tmpl库迁移我的knockout.js应用程序以使用本机淘汰模板库。我必须迁移的代码之一是:
$("#someTemplate").tmpl(data.SomeDataFromServer).appendTo(someHtmlElement);
tmpl()
函数显然是jQuery tmpl库的一部分(参见http://api.jquery.com/tmpl/)
鉴于我现在已将模板更改为:
<script id="someTemplate" type="text/html">
<li>
... some cooling stuff using native ko templates ;-)
</li>
</script>
...对模板的新调用是什么样的?
答案 0 :(得分:2)
您可以使用模板绑定,如:
<div data-bind="template: 'someTemplate'"></div>
或
<div data-bind="template: { name: 'someTemplate', foreach: myItems }"></div>
或
<div data-bind="template: { name: 'someTemplate', data: SomeDataFromServer }"></div>
这适用于本机模板以及jQuery模板。如果您只使用jQuery模板,请确保您没有引用jQuery Templates插件。
如果您的数据是可观察的,那么最初它可以为null并且不会呈现任何内容。然后,当您从AJAX调用中填充它时,它将使用您的数据进行更新。
另一个选择是使用ko.applyBindingsToNode
,它看起来像:
var data = [ { name: "one" }, { name: "two" } ];
ko.applyBindingsToNode(document.getElementById("test"), { template: { name: 'someTemplate', foreach: data } });