0

我遇到了一个问题:我有带有 SVG 图标的全局变量,我想使用 for 循环渲染模板内的所有图标。如何在 for 循环中将全局变量呈现为数据。

facebook: <svg viewBox="0 0 8 17" fill="none" xmlns="http://www.w3.org/2000/svg" .../>
{% set
 list = [
   {
     link: 'https://facebook-link',
     icon: 'facebook',
     title: 'facebook group',
   },
   {
     link: 'https://twitter-link',
     icon: 'twitter',
     title: 'twitter group',
   }
 ]
%}

<ul class="socials">
 {% for data in list %}
  <li class="socials__item">
    <a href="{{data.link}}" 
       title="{{data.title}}"
       target="_blank" 
       rel="noopener noreferrer nofollow"
       class="socials__link"
       >
     {{ data.icon | safe }}
    </a>
  </li>
  {% endfor %}
</ul>
4

1 回答 1

0

您可以使用自定义过滤器或全局函数通过其名称获取变量的值

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

env.addFilter('context', function(variable) {
    return this.ctx[variable];
});

var html = env.renderString(
    `{{ 'facebook' | context | safe }}`, 
    {facebook: '<a href = "www.facebook.com">FB</a>'}
);

console.log(html);
于 2020-02-05T13:20:51.670 回答