Samstag, Februar 22, 2020

Lenker Vorlage Rendering Vorlage als Text

Erstellte ich einen Helfer aus dem LENKER zu helfen, mit Logik, aber meine Vorlage analysiert den zurückgegebenen html-Code als text und nicht als html.

Habe ich ein quiz results “ – Seite angezeigt wird, nachdem Sie das quiz abgeschlossen ist:

  <script id="quiz-result" type="text/x-handlebars-template">
        {{#each rounds}}
          {{round_end_result}}
        {{/each}}
        <div class="clear"></div>
  </script>

Für jede der Runden, benutze ich einen Helfer, um zu bestimmen welche template zu Rendern einer Runde Ergebnis:

  Handlebars.registerHelper("round_end_result", function() {
    if (this.correct) {
      var source = '';
      if (this.guess == this.correct) {
        console.log("correct guess");
        var source = $("#round-end-correct").html();
      } else {
        var source = $("#round-end-wrong").html();
      }
      var template = Handlebars.compile(source);
      var context = this;
      var html = template(context);
      console.log(html);
      return html;
    } else {
      console.log("tie");
    }
  });

Hier ist eine Vorlage, die beschreibt, einen richtigen Runde (nehmen wir mal sagen, es machte die #Runde-end-richtige Vorlage):

  <script id="round-end-correct" type="text/x-handlebars-template">
        <div></div>
  </script>

Hier ist, was gerendert wird:

<div></div>

Nicht als HTML, sondern als text. Wie bekomme ich es zum Rendern der HTML-als HTML, sondern als text?

InformationsquelleAutor der Frage egidra | 2011-08-23

2 Kommentare

  1. 147

    Ich gehe davon aus, dass unescaping in LENKER funktioniert genauso wie in vanilla Schnurrbart.
    In diesem Fall verwenden die triple Schnurrbärte zu unescape html, i,e: {{{unescapedhtml}}} wie:

    <script id="quiz-result" type="text/x-handlebars-template">
        {{#each rounds}}
          {{{round_end_result}}}
        {{/each}}
        <div class="clear"></div>

    für die ref-siehe:
    http://mustache.github.com/mustache.5.html

    InformationsquelleAutor der Antwort Geert-Jan

  2. 19

    Geert-Jan ‚ s Antwort richtig, aber nur für Referenz Sie können auch festlegen, dass das Ergebnis „sicher“ direkt in den Helfer (code aus handlebars.js wiki)

    Handlebars.registerHelper('foo', function(text, url) { 
      text = Handlebars.Utils.escapeExpression(text);
      url = Handlebars.Utils.escapeExpression(url); 
      var result = '<a href="' + url + '">' + text + '</a>'; 
      return new Handlebars.SafeString(result); 
    });

    Mit, die Sie verwenden können regelmäßige Doppel-LENKER {{ }} und LENKER nicht entkommen Ihren Ausdruck.

    InformationsquelleAutor der Antwort Peter Pajchl

Kostenlose Online-Tests