Гнездо нокаут шаблоны foreach - PullRequest
3 голосов
/ 24 апреля 2011

Я пытаюсь вложить некоторые шаблоны jQuery. Я знаю, что jQuery имеет синтаксис {{tmp, который я могу использовать, но это не сработает для меня, так как мне нужно использовать шаблон foreach нокаута. Как вы можете видеть ниже, у меня есть div, связанный с первым тегом скрипта. это мой первый шаблон, использующий синтаксис foreach нокаута для обхода наблюдаемого массива сообщений. внутри этого шаблона я пытаюсь поместить еще один div, связанный с другим шаблоном, который использует foreach нокаута, чтобы пройти через массив внутри каждого члена массива 'messages'. Это не работает. Я получаю ошибки JavaScript (например, «ожидаемый идентификатор»). Есть идеи, что я делаю не так?

     <div data-bind="template: {name: 'contactIMSTemplateContent', foreach:messages}"></div>
 <script id="contactIMSTemplate" type="text/html">
    <span class="tabTop">${viewModel.contacts()[$data.contact].name()}</span>
 </script>
             <script id="contactIMSTemplateContent" type="text/html">
    <div class="tabContentIM" >
    <div data-bind="template: {name:'IMSTemplate', foreach:${viewModel.messages()[$data.contact].ims}}" ></div>

    </div>
             </script>
 <script id="IMSTemplate" type="text/html">

      <div class="message"><span class="messageFrom">${viewModel.contacts()[0].name()}</span> ${$data}</div>
 </script>

Моя модель выглядит следующим образом:

var viewModel = {
    contacts: ko.observableArray([new contact("Contact Name", "contact status", "busy", "e@t.com", "url")]),
    messages: ko.observableArray([{
        contact: 0,
        ims: new ko.observableArray(["chat"])
    }])
};

1 Ответ

6 голосов
/ 24 апреля 2011

Я не знаю точно, как выглядит ваша viewModel, но эта строка вызовет проблему:

<div data-bind="template: {name:'IMSTemplate', foreach:${viewModel.messages()[$data.contact].ims}}" ></div>

Внутри привязки данных вы можете напрямую использовать переменныеи не нужно использовать синтаксис ${.Кроме того, в конце атрибута есть }}, что заставит плагин шаблонов jQuery попытаться проанализировать его как тег.Если вам когда-нибудь понадобится поместить две фигурные скобки в привязку данных, просто поместите пробел между ними, и это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...