我有一个具有if / else条件的Underscore模板
问题:
下划线为逻辑部分插入不需要的空格。 满足else条件时生成的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
我想删除模板中插入的换行符/空格....
有没有解决办法呢?
答案 0 :(得分: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(有意)简单和最小的模板可能不适合你。
答案 1 :(得分:1)
我还发现你可以通过调整Underscore用来评估javascript代码的正则表达式来摆脱这个不需要的空白。
_.templateSettings.evaluate = /(?:\n\s*<%|<%)([\s\S]+?)%>/g
答案 2 :(得分:1)
我通过使用tpl.js的分叉版本来成功:https://github.com/ZeeAgency/requirejs-tpl 您可以在此处找到我的版本:https://github.com/GuillaumeCisco/requirejs-tpl/
基本上我在收到数据时添加.replace(/\s\s+/g, '')
,允许我默认修剪标签之间的空格。