Спасаясь от фигурных скобок, стоящих рядом с выражением на руле - PullRequest
0 голосов
/ 25 августа 2018

Не могу понять, как экранировать символы {или}, стоящие рядом с выражением в движке Java-шаблонов руля .

Я использую шаблоны руля для генерации простого текста, чтобы я мог 't использовать коды скобок HTML ASCII в соответствии с рекомендациями там .

Мне нужно, чтобы выражение типа \{{{variable.name}}\} было разрешено до {variable.value}.Должен ли я создать помощников для этого или есть более чистый способ?

Ответы [ 2 ]

0 голосов
/ 01 августа 2019
{{myvar}}{{append '' '}'}}

добавить помощников отсюда: https://www.npmjs.com/package/handlebars-helpers#string

0 голосов
/ 27 августа 2018

Вот несколько примеров побега.Последний метод завершается с помощью помощника (когда другие методы невозможны).

$(document).ready(function () {
  var context = {
    "textexample1" : "hello",
    "textexample2" : "<div><b>hello</b></div>",
    "textexample3" : "{ 'json' : 'sample }"
  };
  Handlebars.registerHelper('surroundWithCurlyBraces', function(text) {
    var result = '{' + text + '}';
    return new Handlebars.SafeString(result);
  });
	var source   = $("#sourceTemplate").html();
  var template = Handlebars.compile(source);
  var html    = template(context);
  $("#resultPlaceholder").html(html);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script id="sourceTemplate" type="text/x-handlebars-template">
Simple text : {{textexample1}}<br/>
Html text not escaped : {{textexample2}}<br/>
Html text escaped : {{{textexample2}}}<br/>
Json text : {{textexample3}}<br/>
Non JSON text with surrounding mustaches {} : { {{textexample1}} }<br/>
Non JSON text with surrounding mustaches (no space)  : &#123;{{textexample1}}&#125;<br/>
Solution with helper : {{#surroundWithCurlyBraces textexample1}}{{/surroundWithCurlyBraces}}
</script>
<br/>
<div id="resultPlaceholder">
</div>
...