Handlebars.js disable escaping with noEscape optio

2019-04-05 11:16发布

I have all my content pre-escaped, so rather than using the triple stash everywhere i would like to globally disable handlebars escaping. A quick search showed a similar feature which I can see in my build of handlebars, however I don't know how to turn it on.

The pull request is here: https://github.com/wycats/handlebars.js/pull/121

I've tried adding Handlebars.Compiler.options.noEscape = true in my code but it always comes back with options undefined. Even after defining the options its not picking it up. Does anyone know how I should be enabling this option in my script file? Thanks

3条回答
太酷不给撩
2楼-- · 2019-04-05 11:27

Suppose,

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

Now try to print result. There is an apostrophe in target string value. Which will not change by encoded string. If you will remove the {noEscape:true}from compile function then it will change.

查看更多
我想做一个坏孩纸
3楼-- · 2019-04-05 11:28

Try something like this:

var template = Handlebars.compile(source, {noEscape: true});
查看更多
男人必须洒脱
4楼-- · 2019-04-05 11:46

Using the "triple-stash" {{{ is another option when you only want one variable in the template to not get escaped:

Handlebars HTML-escapes values returned by a {{expression}}. If you don't want Handlebars to escape a value, use the "triple-stash", {{{.

https://handlebarsjs.com/

查看更多
登录 后发表回答