簡體   English   中英

使用變量名稱調用nunjucks模板宏

[英]Call nunjucks template macro using variable name

給定一個宏:

{% macro foo() %}
{% endmacro %}

有沒有一種方法可以使用變量名來調用它:

{% set fn = 'foo' %}
... call macro using 'fn'

另外,如何從自定義標簽調用宏? 我創建了一個標簽,可以接受這些變量,但不確定如何從那里插入宏。

最簡單的方法是使用當前context

let env = nunjucks.configure([
...
env.addGlobal('getContext', function(name) { 
    return (name) ? this.ctx[name] : this.ctx;
})

在模板中

{% macro foo (arg1, arg2) %}
    {{arg1}}{{arg2}}
{% endmacro %}

{% set fn = 'foo' %}
{{ getContext(fn)(arg1, arg2) }}

我對此有一個答案。 我一直在解決這個問題,並且已經可以解決了。 也許您可以采納我在這里提出的建議,並在此基礎上進行擴展。

基本前提是將渲染切換到另一個宏,如下所示:

{% macro eval(fn,data) %}
  {{ fn(data) }}
{% endmacro %}

然后:

{% set fn = foo %}
{% set data = { this: that } %}
{{ eval(fn,data) }}

我還沒有弄清楚如何評估從外部源傳遞到模板的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM