转义位于车把中表达式旁边的大括号
Escaping curly brackets standing next to expression in handlebars
无法理解如何转义 handlebars java templating engine 处表达式旁边的 { 或 } 符号。
我正在使用 handlebars 模板生成纯文本,所以我不能按照建议使用 HTML 大括号的 ASCII 代码 there。
我需要像 \{{{variable.name}}\}
这样的表达式解析为 {variable.value}
。我应该为此创建助手还是有更简洁的方法?
这里有一些转义的例子。最后一个方法使用助手进行转义(当其他方法不可行时)。
$(document).ready(function () {
var context = {
"textexample1" : "hello",
"textexample2" : "<div><b>hello</b></div>",
"textexample3" : "{ 'json' : 'sample }"
};
Handlebars.registerHelper('surroundWithCurlyBraces', function(text) {
var result = '{' + text + '}';
return new Handlebars.SafeString(result);
});
var source = $("#sourceTemplate").html();
var template = Handlebars.compile(source);
var html = template(context);
$("#resultPlaceholder").html(html);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script id="sourceTemplate" type="text/x-handlebars-template">
Simple text : {{textexample1}}<br/>
Html text not escaped : {{textexample2}}<br/>
Html text escaped : {{{textexample2}}}<br/>
Json text : {{textexample3}}<br/>
Non JSON text with surrounding mustaches {} : { {{textexample1}} }<br/>
Non JSON text with surrounding mustaches (no space) : {{{textexample1}}}<br/>
Solution with helper : {{#surroundWithCurlyBraces textexample1}}{{/surroundWithCurlyBraces}}
</script>
<br/>
<div id="resultPlaceholder">
</div>
{{myvar}}{{append '' '}'}}
从这里添加助手:
https://www.npmjs.com/package/handlebars-helpers#string
我遇到了这个。
最终,添加辅助函数是最简单的解决方案。
我增强了@Christophe 建议的解决方案,因为我还需要给定参数的驼峰式版本:
Handlebars.registerHelper('surroundWithCurlyBraces', function(text, camelCase) {
return new Handlebars.SafeString(surroundWithCurlyBraces(camelCase? _.camelCase(text): text));
});
那么就可以这样调用了:
{{surroundWithCurlyBraces variable.name}}
或者 - 如果您需要驼峰式
{{surroundWithCurlyBraces variable.name true}}
无法理解如何转义 handlebars java templating engine 处表达式旁边的 { 或 } 符号。
我正在使用 handlebars 模板生成纯文本,所以我不能按照建议使用 HTML 大括号的 ASCII 代码 there。
我需要像 \{{{variable.name}}\}
这样的表达式解析为 {variable.value}
。我应该为此创建助手还是有更简洁的方法?
这里有一些转义的例子。最后一个方法使用助手进行转义(当其他方法不可行时)。
$(document).ready(function () {
var context = {
"textexample1" : "hello",
"textexample2" : "<div><b>hello</b></div>",
"textexample3" : "{ 'json' : 'sample }"
};
Handlebars.registerHelper('surroundWithCurlyBraces', function(text) {
var result = '{' + text + '}';
return new Handlebars.SafeString(result);
});
var source = $("#sourceTemplate").html();
var template = Handlebars.compile(source);
var html = template(context);
$("#resultPlaceholder").html(html);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script id="sourceTemplate" type="text/x-handlebars-template">
Simple text : {{textexample1}}<br/>
Html text not escaped : {{textexample2}}<br/>
Html text escaped : {{{textexample2}}}<br/>
Json text : {{textexample3}}<br/>
Non JSON text with surrounding mustaches {} : { {{textexample1}} }<br/>
Non JSON text with surrounding mustaches (no space) : {{{textexample1}}}<br/>
Solution with helper : {{#surroundWithCurlyBraces textexample1}}{{/surroundWithCurlyBraces}}
</script>
<br/>
<div id="resultPlaceholder">
</div>
{{myvar}}{{append '' '}'}}
从这里添加助手: https://www.npmjs.com/package/handlebars-helpers#string
我遇到了这个。
最终,添加辅助函数是最简单的解决方案。
我增强了@Christophe 建议的解决方案,因为我还需要给定参数的驼峰式版本:
Handlebars.registerHelper('surroundWithCurlyBraces', function(text, camelCase) {
return new Handlebars.SafeString(surroundWithCurlyBraces(camelCase? _.camelCase(text): text));
});
那么就可以这样调用了:
{{surroundWithCurlyBraces variable.name}}
或者 - 如果您需要驼峰式
{{surroundWithCurlyBraces variable.name true}}