任何人都知道为什么这不起作用?我正在尝试让 _.template 使用大括号。
_.templateSettings = { //change delimiter to <$ $>
interpolate : /\<\$(.+?)\$\>/g
};
var list = "<$ _.each(people, function(name) { $> <li><$ name $> </li> <$ }); $>";
var html=_.template(list);
console.log(html({people : ['moe', 'curly', 'larry']}));
它在 )) 处产生以下语法错误错误:
((__t=( .each(people, function(name) { ))==null?'': _t)+
下面是下划线文档所说的:
如果 ERB 样式的分隔符不是您喜欢的,您可以更改 Underscore 的模板设置以使用不同的符号来衬托内插代码。定义一个插值正则表达式来匹配应该逐字插入的表达式,一个转义正则表达式来匹配应该在 HTML 转义后插入的表达式,以及一个评估正则表达式来匹配应该在不插入结果字符串的情况下计算的表达式。您可以定义或省略这三者的任意组合。例如,要执行 Mustache.js 样式模板:
_.templateSettings = { interpolate : /{{(.+?)}}/g };
var template = _.template("你好 {{ name }}!"); 模板({名称:“小胡子”});=> “你好小胡子!”