2011-04-24 111 views

回答

16

按照網頁鏈接到您:

如果ERB風格的分隔符是不是你的那杯茶,你可以改變下劃線的模板設置>用不同的符號來襯托插值代碼。

它建議你更改interpolateevaluate正則表達式。 這意味着您可以將<%=%>用法更改爲不與JSP衝突的用法。

+1

哦天哪,我想我有更好的RTFM!現在我不覺得愚蠢。 ;-)感謝您的快速反應......問題解決了。 – erturne 2011-04-24 17:06:22

72

添加下面的插和評估設置在JSP頁面

_.templateSettings = { 
    interpolate: /\<\@\=(.+?)\@\>/gim, 
    evaluate: /\<\@(.+?)\@\>/gim, 
    escape: /\<\@\-(.+?)\@\>/gim 
}; 

,那麼你可以寫你的資格下劃線的變量,如果並用<@ @>代替<% %>聲明,不會與JSP衝突

+0

這個問題已經回答了! – erturne 2011-12-12 01:07:29

+26

是的,這是回答,但這是爲那些(我)更喜歡有一個複製粘貼解決方案的編碼員:) – coderman 2011-12-15 08:03:47

+0

我已經添加該塊,並將我的所有標籤更改爲<@ @>,它似乎並沒有工作。任何人都可以闡明我做錯了什麼? – jrutter 2012-07-24 21:42:36

23

@ coderman的例子很有幫助,但是,不幸的是,如果你想在你的模板中使用換行符,它不起作用。例如:

<@ 
     var numPages = 10; 
     if (numPages > 1) { 
    @> 
    <div><@[email protected]></div> 
    <@}@> 

的問題是,這裏所描述的evaluate正則表達式不會跨越換行符匹配:Javascript regex multiline flag doesn't work

所以,這對我工作的解決方案是:

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

感謝您的支持!我一直面臨同樣的問題 – Gediminas 2013-04-07 20:04:38

5

該問題可以通過在代碼中跳轉<%序列來解決:

<script id="tmpl" type="text/x-template"> 
    <span>Hello, <\%=name%></span> 
</script> 

因此,您不需要更改任何模板引擎邏輯。

+0

正是我需要的 - 謝謝! – 2014-10-17 14:12:11

0

不需要全局替換另一種方法是指定插和評估的具體方法調用

_.template($("#template-id").html(),null, { 
    interpolate : /\{\{\=(.+?)\}\}/g, 
    evaluate: /\{\{(.+?)\}\}/g 
});`