Переменные внутри шаблона underscore.js
Как настроить переменные внутри шаблона underscore.js
для приложения, построенного с помощью backbone.js
? Я просто хочу создать многократно используемые обработанные строки. Кроме того, можно использовать underscore.js
встроенные функции, такие как _.escape
для обработки этих переменных?
<script type="text/html" id="templateresults">
<p><%= encodeURIComponent(title) %></p> // this works
// try 1:
var encodedTitle = encodeURIComponent(title); // shows up as regular text
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text
// try 2:
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up
<p><% '+encodedTitle+' %></p> // nothing shows up
</script>
title
- элемент JSON (текстовая строка).
Кодированный вывод: This%20is%20a%20Sample%20Title
Обычный выход: This is a Sample Title
Ответы
Ответ 1
Ваша попытка 2 почти правка, но тег, в котором вы выходите, закодированTitle, отсутствует в начале =
и не нуждается в +
в строке. Должно быть:
<p><%= encodedTitle %></p>
В качестве альтернативы вы также можете:
<p><% print(encodedTitle) %></p>
В шаблонах подчеркивания любой javascript, который вы хотите оценить, должен содержаться внутри <% %>
, поэтому ваша вторая попытка просто выводит javascript как строку. Вы правильно использовали =
в своем примере вверху, но пропустили его в try 2.
=
сообщает механизму templating выводить результат вложенного javascript как строку. Если вы не используете =
, выполняется javascript, но ничего не выводится. Шаблоны подчеркивания предоставляют функцию print()
в качестве альтернативы использованию =
, я не знаю, что один способ лучше другого.