#jquery #templates #data-linking
#jquery #шаблоны #связывание данных
Вопрос:
Я пытаюсь заставить привязку данных и tmpls — плагины jquery хорошо работать вместе. Итак, я хочу использовать шаблон для отображения данных, а затем привязку данных, чтобы подключить их обратно к моим объектам. Например:
var items = [{ Name: 'Barak Obama', Phone: '555-1212' },
{ Name: 'George Bush', Phone: '444-2222'}];
function addItems() {
$("MyList").html("");
for (var index in items) {
$("#ListTmpl").tmpl(items[index]).link(items[index]).appendTo("#MyList");
}
};
С таким шаблоном, как этот:
<script id="ListTmpl" type="text/x-jquery-tmpl">
<li>
<input id="Name" value="${Name}" />
<input id="Phone" value="${Phone}" />
</li>
</script>
Однако, где у меня проблема, так это в том, что я хочу, чтобы элемент содержал массив и отображался с {{each}}
var items = [{ Name: 'Barak Obama', Phone: '555-1212',
kids: [{Name: "Malia"}, {Name: "Sasha"}] },
{ Name: 'George Bush', Phone: '444-2222'},
kids: [{Name: "Barbara"}, {Name: "Jenna"}] }];
и шаблон, подобный этому:
<script id="ListTmpl" type="text/x-jquery-tmpl">
<li>
<input id="Name" value="${Name}" />
<input id="Phone" value="${Phone}" />
<ul>
{{each kids}}
<li> ${Name}
{{/each}}
</ul>
Но как мне связать данные дочерних имен обратно с исходными объектами?
Ответ №1:
Возможно, вам захочется взглянуть на knockout.js
Он использует шаблоны jquery и собственный механизм привязки.
Ответ №2:
.link () в настоящее время не поддерживает вложенные массивы или объекты, которые вы ищете. Скорее всего, вы захотите сгладить свой объект JSON, чтобы воспользоваться преимуществами привязки к данным: http://jsfiddle.net/rUrXF/1
Похоже, что существует проблема, открытая для вложенных объектов: https://github.com/jquery/jquery-datalink/issues/24