Как отфильтровать тег шаблона? - PullRequest
8 голосов
/ 10 августа 2010

У меня есть тег, который выглядит следующим образом:

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}

, который просто отображает пустую форму.Но теперь я хочу передать результат этого в фильтр escapejs, чтобы я мог использовать его в переменной JavaScript.Как я могу это сделать?

Ответы [ 3 ]

15 голосов
/ 10 августа 2010

Многие теги поддерживают as variablename, то есть просто поместите as variablename в конец тега, а затем вывод этого тега будет помещен в переменную, а не отображается.

Это {% partial %} тег может поддерживать это.Вот пример, если это так:

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form as myvar %}{{ myvar|escapejs }}

Если рассматриваемый тег является фрагментом «Частичный тег» , то, похоже, он не поддерживает это.Но, вероятно, его можно было бы переписать для поддержки.

Вы можете использовать « Вывод шаблона захвата в качестве переменной », а затем применить фильтр к захваченному контенту, например так:1015 *

{% captureas myvar %}{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form  %}{% endcaptureas %}{{ myvar|escapejs }}
1 голос
/ 21 мая 2019

Применение фильтра к выводу тега шаблона также может быть выполнено без каких-либо внешних зависимостей, используя встроенный тег шаблона filter. Из документации :

[Этот тег шаблона] фильтрует содержимое блока через один или несколько фильтров. В каналах можно указать несколько фильтров, а фильтры могут иметь аргументы, как в синтаксисе переменной.

Пример в оригинальном вопросе был бы написан так:

{% filter escapejs %}
{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}
{% endfilter %}
1 голос
/ 10 августа 2010

Другое решение для переноса данных в переменную JS:

<div class="display:none" id="empty-vehicle-form">{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}</div>

Затем наберите и удалите их одновременно

var empty_form = $('#empty-vehicle-form').remove().html();

Преимущество этого решения заключается в том,другие сценарии JS могут предварительно обработать его, прежде чем вырвать его из DOM.escapejs также создает файлы большего размера со всеми этими escape-символами.

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