可以't让underscore.js在没有语法错误的情况下使用大括号
Can't get underscore.js to use curly braces without syntax error
有人知道为什么这不起作用吗?我正试图让_模板使用大括号。
_.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)+
以下是Undercore文档中的内容:
如果ERB风格的分隔符不是你喜欢的,你可以改变Undercore的模板设置使用不同的符号进行衬托插值代码。定义插值正则表达式以匹配表达式应该逐字插入,一个要匹配的转义正则表达式应在HTML转义后插入的表达式,以及计算regex以匹配应该在没有插入到生成的字符串中。您可以定义或省略三者的结合。例如,要执行Mustache.js样式模板:
_.templateSettings={interpole:/{{(.+?)}}/g};
var template=_.template("你好{{name}}!");模板({名称:"Mustache"});=>"你好,野马!"
您的问题是,插值的东西应该产生一个独立的JavaScript表达式,而这个:
_.each(people, function(name) {
不是有效的表达式。您需要定义单独的求值和插值正则表达式,然后对_.each
使用赋值;像这样的东西:
_.templateSettings = {
interpolate: /'{'{=(.+?)'}'}/g,
evaluate: /'{'{(.+?)'}'}/g,
};
var list = "{{_.each(people, function(name) {}} <li>{{=name}}</li> {{ }); }}";
请注意,插值现在使用{{= ... }}
,而{{ ... }}
仅用于评估(或嵌入)小JavaScript片段。
演示:http://jsfiddle.net/ambiguous/SDmLz/
相关文章:
- 如何解决这种情况下的非法调用类型错误
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- 未捕获错误:在未加载模板编译器的情况下,无法调用“compile”.请在调用“compile”之前加载“ember te
- 在没有F12工具的情况下恢复Internet Explorer上的javascript日志和错误
- 按钮(禁用=错误)条件;在某些情况下有效,而在其他情况下无效
- ObjectId数组将不会在没有错误的情况下填充
- 如何在不获得引用错误的情况下将不存在的JavaScript对象与未定义的对象进行比较
- 为什么在没有 var 关键字的情况下分配给变量时会出现引用错误
- 如何在不出现异步错误的情况下加载 Gist 代码
- AngularJS - 处理错误错误:[ng:areq] 在此特殊情况下 (?)
- 我们如何在错误的资源请求的情况下使用 XMLHttpRequest 函数处理程序
- 在某些情况下没有“访问控制-允许源”标头错误,但在其他情况下则没有
- 在我的情况下,未定义的 AngularJS 不是函数错误
- JavaScript 在没有全局变量初始化值的情况下得到错误
- 得到"SCRIPT70:许可被拒绝”;仅在EDGE浏览器/JJAVASCRIPT错误的情况下
- 在以下情况下,当错误来自 PHP 作为对 ajax 请求的响应时,如何显示警报
- Facebook在没有代码的情况下抛出错误
- 即使在正确调用函数的情况下,对象也需要在javascript中出现错误
- 在这种情况下,乘法和除法不会解决浮点错误
- 为什么"对象未定义”;在这种情况下没有抛出错误