是否可以将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;
}"

===============>>#1 票数:0 已采纳

下划线的模板函数不执行类型检查,并且始终返回属性/变量的值。

https://github.com/documentcloud/underscore/blob/master/underscore.js#L1161

但是您可以使用下划线模板评估块来运行javascript函数。

因此,您可以执行以下操作:

var template = _.template("<% var spend = calc() %>{{title}} spends {{ spend }}");

显然,这是使用默认的ERB样式评估块,因此,如果您愿意使用其他语法,可以随时在_.templateSettings编写自己的正则表达式以evaluate

===============>>#2 票数:0

最简单的方法是评估函数,因为Underscore允许模板块内包含任意JavaScript。

var template = _.template("{{title}} spends {{calc()}}");

  ask by Jeroen translate from so

未解决问题?本站智能推荐:

关注微信公众号