Можно ли использовать имена свойств, которые содержат точки в переменных Nunjucks? - PullRequest
0 голосов
/ 19 марта 2020

Когда я пытаюсь отобразить строку Nujucks: Greeting: {{ bar.text }} в следующем javascript контексте объекта через renderString():

const foo = {
  'bar.text': 'Hello world'
}

, я получаю следующий вывод: Template render error: attempted to output null or undefined value. Эта проблема решается при удалении точек.

Можно ли использовать строковые свойства, содержащие точки, при визуализации шаблонов в Nunjucks?

1 Ответ

0 голосов
/ 20 марта 2020

{{ bar.text }} означает, что у вас есть bar -объект с text -prop. Итак, я вижу два способа решить эту проблему.

  1. Использовать объект
const foo = {
  bar: {text: 'Hello world'}
}
Добавить фильтр / глобальную функцию для получения значения по строке bar.text
var nunjucks  = require('nunjucks');
var env = nunjucks.configure();

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

var html = env.renderString(`{{ 'bar.text' | context }}`, {'bar.text': 'Hello-world'});
console.log(html);
...