1

我有以下代码,并希望将所有下划线模板设置为使用 mustache 语法。如果我将 _.templateSetting 移到函数之外,它就不起作用。我将如何在全球范围内设置它?

提前谢谢

arc_eh.mb={
  show_tree:function(){
    // all i want to do is move this outside and set globally 
    //  for all my underscore microtemplates
    _.templateSettings = {
      interpolate : /\{\{(.+?)\}\}/g
    };

    var template=_.template("hello {{ some }}");
    var jt = { "some" : "more-something" };
    //var final=template({ some : "say-something" });
    var final=template(jt);
    console.log(final);

更新#1

所以我已经用我在这里遇到的问题更新了你的小提琴:http: //jsfiddle.net/vMHeq/1/

我同意你的小提琴工作正常 - 我知道这是一个我不熟悉的范围问题。任何帮助表示赞赏。

4

1 回答 1

1

基本上,您需要在 arc_eh.mb 对象之外设置 _.templateSettings 选项。如果您想使用 _.template 的所有功能,您需要包含所有三个设置。我使用 {{- }}、{{= }} 和 {{ }} 对此进行格式化。

_.templateSettings = {
    interpolate: /\{\{\=(.+?)\}\}/gim,
    escape: /\{\{\-(.+?)\}\}/gim,
    evaluate: /\{\{([\s\S]+?)\}\}/gim
};

设置一个简单的小提琴来告诉你发生了什么。

http://jsfiddle.net/AbLA8/1/

于 2012-12-14T03:18:37.630 回答