带有下划线和对象文字的javascript范围

时间:2012-12-14 02:33:06

标签: javascript underscore.js

我有以下代码,并希望将所有下划线模板设置为使用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/

我同意你的作品很好 - 我知道这是一个我不熟悉的范围问题。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

设置一个简单的小提示,告诉你是什么。

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