1

{ }在 Handlebars 模板中包含大括号时遇到了困难,因此它不会干扰 Handlebars 语法。

具体来说,我想要一个这样的模板:

{{{sometag}}}

除了我希望第一个和最后一个大括号按字面意思呈现,而不是成为 Handlebar 的“非转义表达式”语法的一部分。

目前,我能想到的最短的可移植语法是{{#with "{"}}{{.}}{{/with}},所以我想要的模板看起来像:

{{#with "{"}}{{.}}{{/with}}{{sometag}}{{#with "}"}}{{.}}{{/with}}

我可以使用 HTML 实体(如https://stackoverflow.com/a/16278085/3088208{建议),或者在 initial 之后和 final 之前插入 HTML 注释},但是这些解决方案虽然实用,但依赖于 HTML,这使得它们受到限制.

PS 发现了一个重复的问题:转义大括号站在车把中的表情旁边

4

2 回答 2

2

对于将来登陆这里的任何人,此解决方案对我有用 在车把内渲染双花括号部分

TL;DR 添加一个\到您的值,例如\{{{whatever}}}将呈现{{{whatever}}}

于 2021-07-16T06:09:10.313 回答
0

我也在寻找这个解决方案,找不到任何东西。所以我创建了助手

Handlebars.registerHelper('bracket', function(num, options = num) {
	const i = Number.isInteger(num) ? num : 1;
	const open = '{'.repeat(i);
	const close = '}'.repeat(i);
	return `${open}${options.fn(this)}${close}`;
});

你可以像这样使用它

{{#bracket 2}}styles.{{name}}{{/bracket}}

它会给

{{styles.Name}}

如果未指定括号数,则为 1。

于 2019-03-14T22:08:24.457 回答