我有一个 Backbone.js 应用程序托管在 Sinatra 中,并通过 ERB 脚本呈现。主干模板使用下划线模板功能,因此变量在 ERB 中呈现,如下所示:
<div id="<%%= variable %>">
额外的“%”转义了该变量的呈现,并用一个“%”呈现它,这是下划线模板库将拾取的。
我在升级到 HAML 时尝试了以下操作:
#"<%= id %>"
这没有用。如何使用 HAML 完成相同的任务?
首先,您不能使用#
快捷方式来创建id
具有这样的值的值,您必须做很长的路要走:
%div{:id => "<%= id %>"}
默认情况下,Haml 将转义属性,因此这将产生如下内容:
<div id='<%= id %>'></div>
这可能不是你想要的。:escape_attrs
您可以通过将选项设置为 false来关闭属性转义。这将产生所需的输出:
<div id='<%= id %>'></div>
请注意,此选项会影响文档中的所有属性。
另一种方法是在您的模板中使用一组不同的分隔符。例如你可以使用{{...}}
这个:
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};
现在 Haml 不会转义属性值。