0

我试着用这个question覆盖全局使用require函数的模板函数,并且它适用于templateSetting。下划线模板函数覆盖全局注入HTML

我试图扩展/覆盖_.template函数以使用下面的代码包装div。但与普通的模板不分析模板,得到了下面<%= title %>

define(['underscoreBase'], function(_) { 
    _.template = function(str){ 
     return "<div class='test'>"+str+"</div>"; 
    }; 
    return _; 
}); 

我们如何acheive添加/缠上_.template字符串内容有些HTML标签?请指教。

+0

扩展和压倒一切的是完全不同的事情。你究竟需要什么? –

+0

@HenriqueBarcelos我想重写_.template字符串来包装HTML – mymotherland

回答

0

你需要一个参考保持原来的template功能:

define(['underscoreBase'], function(_) { 
    var oldTemplate = _.template; 
    _.template = function(str){ 
     return oldTemplate("<div class='test'>"+str+"</div>"); 
    }; 
    return _; 
}); 
+0

我试过了,但有这样的东西 function(obj){obj ||(obj = {}); var __t,__ p ='',__ e = _。escape,__ j = Array.prototype.join; function print(){__ p + = __ j.call(arguments,'')} with(obj){__ p + =' \ r \ n'; if(showRootHeader){; __p + ='\ r \ n '+((__ t =(title))== null?'':__ t)+' \ r \ n'; }; __p + ='\ r \ n – mymotherland

+0

对不起,我把字符串放在错误的地方。 –

+0

我已经尝试过,现在未捕获的ReferenceError:标题未定义:( – mymotherland

0

我已经实现了它像

var oldTemplate = _.template; 
    function template(str, data) { 
     return oldTemplate(
      "<div class='test'>"+str+"</div>", 
      data 
     ); 
    } 
_.mixin({ template:template }); 
return _;