2012-03-21 18 views
8

Po wyjęciu z pudełka szablon podkreślenia używa znaczników <%= %> dla surowca, a <%- %> dla treści z escaped HTML.Podkreślanie szablonów - zmienianie znaczników tokenów

Wiem, że można zmienić za pomocą markerów coś takiego:

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

ale jak to się ma do surowego i uciekł treści? Wydaje mi się, że kończy się to tylko jednym typem znacznika. A może coś przeoczyłem?

Odpowiedz

15

Underscore.js documentation mówi tego (podkreślenie dodane):

Jeśli ograniczniki ERB-style nie są filiżanki herbaty, można zmienić ustawienia szablonu podkreślenia, aby używać różnych symboli do potrącenia kod interpolowane. Zdefiniuj interpolate wyrażenie regularne, aby dopasować wyrażenia, które należy interpolować dosłownie, wyrażenia escape, aby dopasować wyrażenia, które powinny zostać wstawione po uzyskaniu kodu HTML z uniknięciem, i ocenić wyrażenie, aby dopasować wyrażenia, które powinny zostać ocenione bez wstawiania do wynikowego łańcucha.

Więc może po prostu nadać obiektowi _.templateSettings właściwość 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 dzięki - brakowało tego trochę. Byłoby jednak bardziej użyteczne, gdyby zawierały oba ustawienia w przykładowym kodzie. – UpTheCreek