Knockout本机模板等同于jQuery .tmpl(data)函数

时间:2012-02-23 14:19:06

标签: knockout.js jquery-templates

我目前正在使用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>

...对模板的新调用是什么样的?

1 个答案:

答案 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 } });