2012-11-01 23 views
1

不需要的空格我有具有如果/其他條件Underscorejs消除了對邏輯部分

一個下劃線模板

問題:

下劃線插入不需要的空格爲邏輯部分。 生成的HTML的結果,當其他條件被滿足是

<a>NAME</a> 


<a class="name" href="/kkk/213">kkkkkkkk</a>Sir 

但我想的

<a>NAME</a><a class="name" href="/kkk/213">kkkkkkkk</a>Sir 

輸出I要移除的換行/空間正被插入到模板中。 ...

有沒有解決方案來做到這一點?

+0

Underscore模板是什麼樣的? –

+0

NAME <%,如果(some_condition){%> <%打印( '你')%> <%}其他{%> <%-print(NAME)%> <% }%> – user1244197

回答

4

下劃線的_.template不對空格做任何事情,所以你必須在你的模板中安排空白符合你需要的輸出。事情是這樣的:

<a>NAME</a><% if(some_condition) { %> yours <% } else { %> <a class="name" href="/kkk/<%- ID %>"><%= NAME %></a> <% }%> 

演示(在控制檯的樣子):http://jsfiddle.net/ambiguous/gbx3M/

還是更具可讀性:

<a>NAME</a><% 
if(some_condition) { 
    %> yours <% 
} else { 
    %> <a class="name" href="/kkk/<%- ID %>"><%= NAME %></a> <% 
} %> 

演示(凝視你的控制檯):http://jsfiddle.net/ambiguous/xuxLQ/

如果你真的不需要標籤之間的空間,那麼我認爲你堅持這一點:

<% if(some_condition) { 
    %><a>NAME</a>yours<% 
} else { 
    %><a>NAME<a class="name" href="/kkk/<%- ID %>"><%= NAME %></a><% 
} %> 

和手動剝離前/後空白:http://jsfiddle.net/ambiguous/LN7eU/

另一種選擇是使用CSS浮起並使得空白變得無關緊要的元件進行定位。

如果這些選項都不夠好,那麼Underscore的(有意)簡單和最小的模板可能不適合你。

+0

太感謝你了......這真的幫助了我,它就像一個魅力! – user1244197

+0

@ user1244197:不客氣。這就是我來這裏的原因。 –

+0

@ user1244197:如果此解決方案解決了您的問題,則應考慮將其標記爲接受的答案;) –

1

我還發現,通過調整Underscore用於評估JavaScript代碼的正則表達式,您可以擺脫此不需要的空白。 https://github.com/ZeeAgency/requirejs-tpl 你可以找到我的版本在這裏:

_.templateSettings.evaluate = /(?:\n\s*<%|<%)([\s\S]+?)%>/g 
+0

覆蓋評估將無濟於事,因爲修剪將僅在<% ... %>之間,而在html標記之間不會。 –