通常,如果您使用Underscore.js模板,任何看起来像<% ... %>
和<%= ... %>
的表达式都会被Underscore.js解析。
如果我想将文本<% ... %>
嵌入到模板中,那么如何转义这样的值呢?
换句话说:我如何告诉Underscore.js忽略一些看起来像占位符但不是占位符的东西?
我想我必须使用某种形式的转义,但是通常的\
是行不通的。如果我打字
_.template('<%= name %> ### \<%= name %>', { name: 'foo' });
因此,我得到了foo ### foo
,这显然不是我想要的。
更新:为了更清楚地说明,我想从上面的行中得到什么--它应该会导致
foo ### <%= name %>
发布于 2013-01-30 12:14:43
如果您的最后输出是HTML,您可以用它们的HTML转义代码代替<
和>
:
_.template('<%= name %> ### <%= name %>', { name: 'foo' });
您还可以使用修改下划线的模板设置来支持这些东西,这样<%= ... %>
就没有什么可以下划线的意思了:
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g
};
var t = _.template('{{name}} ### <%= name %>', { name: 'foo' });
发布于 2018-11-30 06:30:53
对于非html特定的解决方案,请使用unicode字符转义序列来转义<
、>
和%
。使用您的示例,如下所示:
_.template('<%= name %> ### \u003C\u0025= name \u0025\u003E', { name: 'foo' });
威尔输出
foo ### <%= name %>
https://stackoverflow.com/questions/14577679
复制