построение массива/объекта в циклах nunjucks

#javascript #html #nunjucks

Вопрос:

У меня в файле nunjucks есть следующее,

 {% set inProgressJobs = [] %}
{% for job in jobs %}
 {% set inProgressJobs = (setProgressJobs.push([
    {
         text: "<b><a href="">{{ job.jobTitle}}</a></b>"
    }
 ]), inProgressJobs) %}
 

Когда я использую это в представлении, я ожидал бы увидеть Web Designer , но на самом деле я вижу {{ job.jobTitle }} , как я интегрирую свой var в атрибут text?

Комментарии:

1. Может быть, использовать литерал шаблона?

Ответ №1:

Вы пытаетесь кодировать внутри шаблона. Это возможно (см. Ниже), но вне шаблонной идеологии. Попробуйте вложить необходимую логику в фильтры и глобальные функции.

 const nunjucks  = require('nunjucks');
const env = nunjucks.configure();

env.addFilter('print', console.log); // for debug

const html = env.renderString(`
    {% set arr = [] %}
    {% for i in range(1, 10) %}
        {{ '' if arr.push(i) }} {# arr.push always returns non-zero so result will be '' #}
    {% endfor %}
    {{ arr | print }} {# print arr to console #}
`);
// console.log(html); // html is a pack of spaces and tabs