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 _;