1

我有一个带有 if/else 条件的下划线模板

问题 :

下划线为逻辑部分插入不需要的空格。满足 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

我想删除模板中插入的换行符/空格....

有什么解决方案可以做到这一点吗?

4

3 回答 3

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 的(故意)简单和最小的模板可能不适合您。

于 2012-11-01T03:16:06.550 回答
1

我还发现,您可以通过调整 Underscore 用于评估 javascript 代码的正则表达式来消除这种不需要的空格。

_.templateSettings.evaluate = /(?:\n\s*<%|<%)([\s\S]+?)%>/g
于 2013-05-03T23:23:19.553 回答
1

我通过使用 tpl.js 的分叉版本成功:https ://github.com/ZeeAgency/requirejs-tpl 你可以在这里找到我的版本:https ://github.com/GuillaumeCisco/requirejs-tpl/

基本上我.replace(/\s\s+/g, '')在收到数据时添加一个,默认情况下允许我修剪标签之间的空格。

于 2013-09-13T16:23:14.640 回答