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/

もう 1 つのオプションは、CSS を使用して要素をフロートおよび配置し、空白が無関係になるようにすることです。

これらのオプションのどれもが十分でない場合は、Underscore の (意図的に) シンプルで最小限のテンプレートが適していない可能性があります。

于 2012-11-01T03:16:06.550 に答える