Handlebars.js отключить экранирование с опцией noEscape? - PullRequest
10 голосов
/ 25 марта 2012

У меня уже весь экранированный контент, поэтому вместо того, чтобы использовать тройной тайник везде, я хотел бы глобально отключить экранирование рулей.Быстрый поиск показал похожую функцию, которую я вижу в моей сборке руля, однако я не знаю, как ее включить.

Запрос на получение здесь: https://github.com/wycats/handlebars.js/pull/121

Я попытался добавить Handlebars.Compiler.options.noEscape = true в мой код, но он всегда возвращается с неопределенными параметрами.Даже после определения вариантов его не поднимать.Кто-нибудь знает, как я должен включить эту опцию в моем файле сценария?Спасибо

Ответы [ 3 ]

31 голосов
/ 25 марта 2012

Попробуйте что-то вроде этого:

var template = Handlebars.compile(source, {noEscape: true});
4 голосов
/ 10 сентября 2015

Предположим,

var template = "This is {{target}}";
var target = "user's pictures";
var result = Handlerbars.compile(template, {noEscape:true})({target:target});

Теперь попробуйте распечатать результат.В целевом строковом значении есть апостроф.Который не изменится по кодированной строке.Если вы удалите {noEscape:true} из функции компиляции, он изменится.

3 голосов
/ 11 сентября 2018

Использование «тройного сундука» {{{ - это еще один вариант, когда вы хотите, чтобы только одна переменная в шаблоне не была экранирована:

Руль HTML-экранированных значений, возвращаемых {{выражением)}}.Если вы не хотите, чтобы Handlebars экранировали значение, используйте «тройной тайник», {{{.

https://handlebarsjs.com/

...