[英]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
屬性?
恕我直言,這是危險的行為。 Foo
和Bar
可以覆蓋傳遞給模板和{% 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.