2012-11-01 3 views
1

j'ai un modèle qui a si Souligné/conditions d'autreUnderscorejs la suppression des espaces indésirables pour une partie logique

PROBLÈME:

est Souligné insérer des espaces indésirables pour la partie logique. Le résultat du code HTML généré lorsque d'autre condition est satisfaite est

<a>NAME</a> 


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

mais je veux une sortie de

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

Je veux enlever l'alimentation en ligne/espace qui est inséré dans le modèle. ...

Y at-il une solution pour cela?

+0

À quoi ressemble le modèle Underscore? –

+0

NOM <% if (some_condition) {%> <% print ('vôtre')%> <%} else {%> <%-print(NAME)%> <% }%> – user1244197

Répondre

4

Le _.template de Underscore ne fait rien dans les espaces, vous devez donc organiser les espaces dans votre modèle pour qu'ils correspondent à la sortie dont vous avez besoin. Quelque chose comme ceci:

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

Demo (regardez dans votre console): http://jsfiddle.net/ambiguous/gbx3M/

Ou plus lisible:

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

Demo (regardez dans votre console): http://jsfiddle.net/ambiguous/xuxLQ/

Si vous n'avez vraiment pas besoin d'espace entre les balises du tout alors je pense que vous êtes coincé avec ceci:

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

et de décapage manuellement d'attaque/de fuite des espaces: http://jsfiddle.net/ambiguous/LN7eU/

Une autre option consiste à utiliser CSS pour flotter et positionner les éléments de telle sorte que les espaces blancs devient sans objet.

Si aucune de ces options n'est suffisante, les modèles simples et minimaux d'Underscore (intentionnellement) peuvent ne pas être pour vous.

+0

Merci beaucoup ... Il m'a vraiment aidé et il fonctionne comme un charme!! – user1244197

+0

@ user1244197: De rien. C'est la raison pour laquelle je suis là. –

+0

@ user1244197: Si cette solution résout votre problème, vous devriez envisager de le marquer comme une réponse acceptée;) –

1

J'ai également trouvé que vous pouvez vous débarrasser de cet espace indésirable en modifiant l'expression régulière que Underscore utilise pour évaluer le code javascript.

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

L'évaluation de dépassement n'aidera pas puisque la garniture sera seulement en <% ... %> et non entre les balises html. –

Questions connexes