2012-11-01 24 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标记之间不会。 –