2013-01-10 2 views
2

J'ai cherché autour et je ne pouvais pas trouver celui qui fonctionne vraiment.Quelle est la configuration correcte du modèle de moustache pour _.templateSettings de underscore.template?

Dans Moustache, quand vous lancez 2 bouclés, la chaîne à l'intérieur sera échappée, et si vous lancez 3, ce ne sera pas le cas.

// when you pass {foo: '"bar"'} as hash, the following template will be: 
{{foo}} // => "bar" 
{{{foo}}} // => "bar" 

droite? J'ai donc créé ce qui suit.

http://jsfiddle.net/beatak/6s5PU/

et cela montre interpoler et échapper à l'opposé, ce qui signifie 2 bouclés pour 3 pour échapper non échappés. Quand je retourne entre escape et interpolate dans _.templateSettings, cela ne fonctionne tout simplement pas. POURQUOI? Underscore modèle a priorité de ces trois (escape, interpolate et evaluate)?

Je sais que je suis ignorant evaluate sur jsFiddle maintenant, si cela fonctionne ensemble ce sera fantastique, mais pour l'instant, je veux faire 2 et 3 œuvres bouclés très bien ...

+0

Vous obtenez une 'SyntaxError Uncaught: Jeton inattendu 'dans' underscore.js: 1151'. Probablement un bug; une chaîne JavaScript est concaténée et a tenté d'être évaluée. ([à cette section] (http://underscorejs.org/docs/underscore.html#section-133)) –

Répondre

2

Le regex d'évasion est cherché, puis interpoler, puis évaluer. C'est pourquoi votre formulaire d'échappement {{ }} correspond avant votre formulaire non échappé {{{ }}}. Vous pouvez changer la commande vous-même dans la source pour _.template. Modifier l'ordre des lignes ci-dessus changera la priorité.

Si vous ne souhaitez pas modifier la priorité de soulignement, vous pouvez utiliser une expression régulière d'échappement plus complexe. Il est difficile à faire sans regarder en arrière négatif, mais je suis venu avec:

/\{\{([^\{\}]+?)(?!\}\}\})\}\}/ 

qui devrait signifier: {{, suivi d'un ou plusieurs non-brace caractères, qui ne doivent pas être suivies par croisillon triple (}}}), suivi d'un double renfort }}. Cela fonctionne sur votre violon et j'espère qu'il travaillera pour vous.

+0

QUI SEMBLE TRAVAILLER. IMPRESSIONNANT! – beatak

+0

Mise à jour du violon: http://jsfiddle.net/beatak/6s5PU/5/ – beatak

Questions connexes