jQuery Tmpl и привязка данных работают вместе

#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