使用下划线模板的八字胡样式函数求值
Mustache style function evaluation with underscore.js template
是否可以使用underscore.js与Mustache风格的函数调用?underscore.js手册中有一个如何支持Mustache语法的示例:
_.templateSettings = {
interpolate : /'{'{(.+?)'}'}/g
};
var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"
然而,除了变量之外,mustache.js还会自动检测对象是否为函数,然后对其求值。从mustache.js手册:
var view = {
title: "Joe",
calc: function () {
return 2 + 4;
}
};
var output = Mustache.render("{{title}} spends {{calc}}", view);
但是,使用underscore.js来呈现后者会导致:
var template = _.template("{{title}} spends {{calc}}");
template(view);
"Joe spends function () {
return 2 + 4;
}"
Underscore的模板函数不执行类型检查,总是返回属性/变量的值。
https://github.com/documentcloud/underscore/blob/master/underscore.js L1161
但是你可以使用下划线模板计算块来运行javascript函数。
所以你可以这样做:
var template = _.template("<% var spend = calc() %>{{title}} spends {{ spend }}");
这显然是使用默认的erb风格的计算块,所以如果你宁愿使用不同的语法,可以自由地为evaluate
在_.templateSettings
中编写自己的正则表达式。
最简单的方法是对函数求值,因为Underscore允许在模板块中使用任意JavaScript。
var template = _.template("{{title}} spends {{calc()}}");
相关文章:
- 特定的JavaScript函数,用于将CSS样式表与下拉菜单交换
- Shell样式的函数调用
- 菜单选项卡选择/活动样式取决于url中的file.php、javascript函数
- 函数同时支持回调和返回样式
- Javascript函数innerHTML样式不正确
- 从 RequireJS 中的 CommonJS 样式模块导出构造函数
- 有没有办法从 Javascript 中的函数中调用脚本标签和样式标签
- JavaScript anony函数样式
- 通过函数指定节点的样式
- 如果有样式标记,jQuery的.html函数不会正确地将内容写入文本区域
- JavaScript函数随机CSS样式
- 在 ajax 函数中向 DIV 添加样式更改
- 如何使样式元素的一部分成为函数?(IE:颜色:$random而不是颜色:红色)
- 如何将 JavaScript 中的以下函数转换为延续传递样式 (CPS)
- 在更改时使用javascript函数时向html.dropdownlist添加样式
- 在同一函数中创建
元素并更改样式
- 设置函数图像样式
- 选择下拉样式函数 jquery
- 我可以使用相同的样式函数对不同的GeoJSON层进行样式设置吗?
- 使用下划线模板的八字胡样式函数求值