Исключить собственные шаблоны, эквивалентные функции jQuery .tmpl (data) - PullRequest
2 голосов
/ 23 февраля 2012

В настоящее время я перевожу свое приложение knockout.js из библиотеки jQuery tmpl для использования библиотеки шаблонов нокдауна. Одна из строк кода, которую я должен перенести:

$("#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 Ответ

2 голосов
/ 23 февраля 2012

Вы бы использовали привязку шаблона как:

<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.

Если ваши данные являются наблюдаемыми, то изначально они могут быть нулевыми и ничего не будет отображаться. Затем, когда вы заполняете его из вызова AJAX, он будет обновляться вашими данными.

Другой вариант - использовать ko.applyBindingsToNode, который будет выглядеть так:

var data = [ { name: "one" }, { name: "two" } ];

ko.applyBindingsToNode(document.getElementById("test"), { template: { name: 'someTemplate', foreach: data } });
...