簡體   English   中英

Nunjucks模板中的變量解構

[英]Variable destructuring in Nunjucks template

當前變量被稱為for循環內for屬性:

{% id, item in items %}
  <div>
    {{ id }}
    {{ item.foo }}
    {{ item.bar }}
    {{ item.baz }}
    ...

希望跳過item. 部分for

  ...
  <div>
    {{ id }}
    {{ foo }}
    {{ bar }}
    {{ baz }}

與ES6解構類似:

for (const [id, {foo, bar, baz}] of Object.entries(items)) ...

是否可以在Nunjucks模板中將它們引用為變量而不是item屬性?

恕我直言,這是危險的行為。 FooBar可以覆蓋傳遞給模板和{% set Foo = ... %} vars的值。

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

env.addGlobal('destruct', function(obj) { 
    for (var key in obj)
        this.ctx[key] = obj[key];
})

var res = nunjucks.renderString(`
    {% for id, item in items %}
        {{destruct(item)}}
        {{id}} - {{foo}} - {{bar}}
    {% endfor %}
    `,
    {
        items: {
            A: {id: 10, foo: 'fooA', bar: 'barA'}, 
            B: {id: 20, foo: 'fooB', bar: 'barB'}
        }
    }
);

console.log(res);

暫無
暫無

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

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