2012-03-21 10 views
8

Il modello di sottolineatura out of the box utilizza i marcatori <%= %> per raw e <%- %> per il contenuto di escape HTML.Underscore templating - modifica dei token markers

So che è possibile modificare i marcatori utilizzando qualcosa di simile:

_.templateSettings.interpolate = /\{\{(.+?)\}\}/g; 

Ma come si rapporta questo con crudo e sfuggito contenuti? Mi sembra che tu finisca con un solo tipo di marcatore. O ho trascurato qualcosa?

risposta

15

Il Underscore.js documentation dice questo (enfasi aggiunta):

Se delimitatori in stile ERB non sono la vostra tazza di tè, è possibile modificare le impostazioni del modello di sottolineatura di utilizzare simboli diversi per innescare il codice interpolato. Definire un'espressione regolare interpolata per corrispondere a espressioni che devono essere interpolate verbatim, un'espressione regolare di escape per far corrispondere espressioni che devono essere inserite dopo l'escape HTML e una valutazione regex per confrontare espressioni che devono essere valutate senza inserimento nella stringa risultante.

così si può solo dare l'oggetto _.templateSettings una proprietà escape:

_.templateSettings.escape = /\{\{-(.*?)\}\}/g 
>>> compiled = _.template("Escaped: {{- value }}\nNot escaped: {{ value }}") 
>>> compiled({value: 'Hello, <b>world!</b>'}) 
"Escaped: Hello, &lt;b&gt;world!&lt;&#x2F;b&gt; 
Not escaped: Hello, <b>world!</b>" 
+1

Ah grazie - perdere quel po '. Sarebbe più utile se dovessero includere entrambe le impostazioni nel codice di esempio. – UpTheCreek