2012-02-23 7 views
2

В настоящее время я переношу приложение knockout.js из библиотеки jQuery tmpl, чтобы использовать собственную библиотеку шаблонов для нокаутов. Одна из строк кода, которые я должен перемещаемый:Новичка родных шаблонов, эквивалентная функции jQuery .tmpl (data)

$("#someTemplate").tmpl(data.SomeDataFromServer).appendTo(someHtmlElement); 

tmpl() функция, очевидно, часть библиотеки Tmpl JQuery (см http://api.jquery.com/tmpl/)

Учитывая Теперь я изменил мой шаблон:

<script id="someTemplate" type="text/html"> 
     <li> 
      ... some cooling stuff using native ko templates ;-) 
     </li> 
    </script> 

... как будет выглядеть новый вызов шаблона?

ответ

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.

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

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

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

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

Мне нужно позвонить шаблон из кода JavaScript, хотя (отсюда код $ ("# someTemplate") TMPL (data.SomeDataFromServer) .appendTo (someHtmlElement);). Я получаю некоторые данные с сервера, выполняю некоторую обработку на нем, а затем хочу применить шаблон к этим данным. Данные действительно не принадлежат моей модели. Чтобы дать вам некоторый контекст, данные являются автозаполненными предложениями, поэтому я не хочу, чтобы это в моей модели, но я все же хотел бы иметь возможность вызывать структуру шаблонов шаблонов для новичков, чтобы преобразовать эти данные в html. Надеюсь, это имеет смысл. Таким образом, нокаут имеет эквивалентную функцию для tmpl()? –

+1

Вот пример: http://jsfiddle.net/rniemeyer/gYk6f/ –

+1

Отлично! Скрипка была именно тем, что я искал. Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^