我试图让if / else插入与Underscore.js和HAML一起使用,但无济于事。我已经将Underscore.js中的插值设置更改为以下内容:
_.templateSettings = {
interpolate : /\{\{([\s\S]+?)\}\}/g
};
当我尝试在{{value}}之类的符号中插入值时,这很有效。但是,我没有使if / else语句有效。我有以下内容:
{{ if (true) { }}
{{ val }}
{{ } }}
我收到一个Javascript异常“Uncaught SyntaxError:Unexpected token if”。非常感谢帮助。
答案 0 :(得分:10)
下划线模板使用三组不同的分隔符:
evaluate
:这是针对JavaScript的一些内容,默认为<% ... %>
。interpolate
:这是为了默认转储变量<%= ... %>
的内容。escape
:作为interpolate
,但也会转义HTML,默认为<%- ... %>
。这些大多与ERB语法相匹配。您尝试使用不是表达式的JavaScript的插值语法:
{{ if(true) { }}
但是,if
不能用作JavaScript中的表达式。
您可能想要覆盖所有三种模式:
_.templateSettings = {
evaluate : /\{\{([\s\S]+?)\}\}/g,
interpolate : /\{\{=([\s\S]+?)\}\}/g,
escape : /\{\{-([\s\S]+?)\}\}/g
};
然后说出这样的话:
{{ if (true) { }}
{{= val }}
{{ } }}
如果您可以将模板限制为简单替换,那么您只需在模板中使用interpolate
和{{expr}}
。