2012-06-23 8 views
14

Wie Sie Variablen in einer underscore.js Vorlage für eine App mit backbone.js einrichten? Ich möchte nur wiederverwendbare verarbeitete Strings erstellen. Können auch underscore.js eingebaute Funktionen wie _.escape verwendet werden, um diese Variablen zu verarbeiten?Variablen in underscore.js Vorlage

<script type="text/html" id="templateresults"> 

<p><%= encodeURIComponent(title) %></p> // this works 

// try 1: 
var encodedTitle = encodeURIComponent(title); // shows up as regular text 
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text 

// try 2: 
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up 
<p><% '+encodedTitle+' %></p> // nothing shows up 

</script> 

title ist ein JSON Element (Textstring).

Codierte Ausgabe: This%20is%20a%20Sample%20Title
Reguläre Ausgabe: This is a Sample Title

Antwort

20

Ihr Versuch 2 ist fast richtig, aber der Tag, wo Sie Ausgang encodedTitle wird die = am Anfang fehlt und muss nicht die + in der Zeichenkette. Sollte sein:

<p><%= encodedTitle %></p> 

Alternativ können Sie auch tun:

<p><% print(encodedTitle) %></p> 

In Strich Vorlagen, jede Javascript Sie ausgewertet werden soll, muss innerhalb <% %> enthalten sein, also warum Ihr zweiter Versuch nur gibt das JavaScript als Zeichenfolge. Sie haben die = in Ihrer Probe oben korrekt verwendet, aber in Versuch 2 weggelassen.

Die = teilt der Templating-Engine mit, das Ergebnis des eingeschlossenen Javascript als Zeichenfolge auszugeben. Wenn Sie das = nicht verwenden, wird das Javascript ausgeführt, aber nichts wird ausgegeben. Underscore Vorlagen bieten die print() Funktion als eine Alternative zur Verwendung der =, ich weiß nicht, dass eine Möglichkeit besser ist als die andere.

+0

Süß! Es klappt. Vielen Dank! – Steve

Verwandte Themen