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