Как я могу использовать буквенную разметку DOM в качестве шаблона прототипа?
-
06-07-2019 - |
Вопрос
Например, в моей разметке у меня есть элемент:
<div id="template1">
<img src="#{src}" title="#{title}" />
</div>
Я хочу создать шаблон с внутренним содержимым элемента div, поэтому я попробовал что-то вроде этого:
var template = new Template($('template1').innerHTML);
Проблема в том, что в представлении innerHTML в Internet Explorer кавычки вокруг значения атрибута опускаются, когда в этом значении нет пробелов. Я также пытался использовать Element # inspect
, но в Internet Explorer я получаю нерекурсивное представление элемента / поддерева.
Есть ли другой способ получить шаблонное представление содержимого поддерева?
Решение
Вы также можете встроить скрипт:
<script type="text/html" id="user_tmpl"> <% for ( var i = 0; i < users.length; i++ ) { %> <li><a href="<%=users[i].url%>"><%=users[i].name%></a></li> <% } %> </script>
Быстрый совет: встраивание скриптов в ваш страница с неизвестным типом контента (так обстоит дело здесь - браузер не знает, как выполнить text / html script) просто игнорируются браузером - и поисковыми системами и скринридеры. Это идеальный устройство для маскировки шаблонов на вашу страницу. Мне нравится использовать это техника для быстрых и грязных дел где мне просто нужен маленький шаблон или два на странице и хотите что-то легкий и быстрый.
и вы будете использовать его из сценария, как так:
var results = document.getElementById("results"); results.innerHTML = tmpl("item_tmpl", dataObject);
Другие советы
Похоже, вы можете встроить исходный код шаблона в тег textarea
вместо div
и извлечь его, используя Element # value
. р>
Конечно, делает разметку немного странной, но она все же кажется разумно дружественной для дизайнеров.
Кроме того, как отметил Джейсон в комментарии к исходному вопросу, использование тега img
в текстовой области предотвращает ложный запрос неверного изображения.