Использование jquery-template {{wrap}} для переноса простого текста - PullRequest
0 голосов
/ 23 июня 2011

В шаблонах jQuery я пытаюсь использовать тег шаблона {{wrap}}, чтобы обернуть результаты другого шаблона. Этот второй шаблон отображает простой текст, а не HTML. В настоящее время я получаю пустую строку, в которой я ожидаю получить простой текст, отображаемый в обернутом шаблоне.

Если я окружаю простой текст некоторыми элементами HTML, например тегом <div>, то все работает нормально, но в результаты выводится <div>. Было бы неплохо создать фиктивный тег вокруг моего содержимого, чтобы тег {{html}} работал, но я не хотел бы, чтобы он отображался в отображаемых результатах.

Я также хочу использовать эту же оболочку, если возможно, чтобы обернуть шаблоны, которые на самом деле также генерируют HTML, так что было бы хорошо, если бы один и тот же шаблон оболочки мог работать в обоих случаях.

Вот мой код:

$("#x").html($("#myTmpl").tmpl());

<div id="x" />
<script id="myTmpl" type="text/x-jquery-tmpl">
  The following wraps some non-HTML content: {{wrap "#wrapper"}} help {{/wrap}}
</script>

<script id="wrapper" type="text/x-jquery-tmpl">
  <table>
    <tbody>
      <tr>
        <td>
          Wrapped content: {{html $item.html}}
        </td>
      </tr>
    </tbody>
  </table>
</script>

Этот код можно найти на jsFiddle: http://jsfiddle.net/bernardchen1/BYdeg/

1 Ответ

0 голосов
/ 23 июня 2011

Я в конце концов нашел решение. Я создал использовать фиктивный тег, чтобы обернуть простой текст (или даже HTML, созданный другими шаблонами), а затем я создал функцию, которую я передаю в вызов шаблона, который может удалить фиктивный тег. Я вызываю это так: {{html $data.clean($item)}}. Для «чистой» функции необходим доступ к содержимому, возвращаемому внутренним шаблоном, который я нашел $item.wrapped[0]. Получив этот контент, я смог получить его внутренний html для возврата из чистой функции.

Меня беспокоит вопрос о том, должен ли я получить доступ к $item.wrapped.

В конечном счете, я могу просто попытаться рефакторинг своего кода, чтобы не требовать этот фиктивный тег и функцию очистки.

Это решение можно найти здесь: http://jsfiddle.net/bernardchen1/nmzWt/

Редактировать: существует другое решение для вызова appendTo, чтобы прикрепить HTML-шаблон к другому элементу DOM, а затем вернуть данные обратно.

...