2012-06-23 76 views
14

如何在backbone.js構建的應用程序的underscore.js模板中設置變量?我只想創建可重用的處理過的字符串。另外,可以使用underscore.js的內置函數(如_.escape)來處理這些變量嗎?下面的變量underscore.js模板

<script type="text/html" id="templateresults"> 

<p><%= encodeURIComponent(title) %></p> // this works 

// try 1: 
var encodedTitle = encodeURIComponent(title); // shows up as regular text 
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text 

// try 2: 
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up 
<p><% '+encodedTitle+' %></p> // nothing shows up 

</script> 

title是一個JSON項目(文本字符串)。

編碼輸出:This%20is%20a%20Sample%20Title
常規輸出:This is a Sample Title

回答

20

你試試2幾乎是正確的,但在那裏你輸出encodedTitle缺少=開始和不需要的字符串中的+標籤。應該是:

<p><%= encodedTitle %></p> 

或者你也可以這樣做:

<p><% print(encodedTitle) %></p> 

在下劃線模板,任何你想要的JavaScript評估必須包含在裏面<% %>,因此爲什麼你的第二次嘗試只輸出的JavaScript作爲串。您正確使用頂部樣本中的=,但在嘗試2中省略了它。

=告訴模板引擎將封閉javascript的結果輸出爲字符串。如果您不使用=,則會執行javascript,但不輸出任何內容。 Underscore的模板提供了print()函數作爲使用=的替代方法,我不知道一種方法比另一種更好。

+0

甜!有用。謝謝! – Steve