2016-06-29 4 views
1

Ich habe eine Lenker Vorlage mit mehreren Iff-Blöcken. iff ist ein benutzerdefinierter Helfer zum Vergleichen von Werten. Die Vorlage kompiliert, aber oo Anwendung es bekomme ich keine Ausgabe und keine Fehler.Wie benutze ich Lenker Conditional Helpers?

Bitte was mache ich falsch?

iff Helfer

Handlebars.registerHelper("iff", function (v1, operator, v2, options) { 
    switch (operator) { 
     case '==': 
      return (v1 == v2) ? options.fn(this) : options.inverse(this); 
     case '===': 
      return (v1 === v2) ? options.fn(this) : options.inverse(this); 
     case '<': 
      return (v1 < v2) ? options.fn(this) : options.inverse(this); 
     case '<=': 
      return (v1 <= v2) ? options.fn(this) : options.inverse(this); 
     case '>': 
      return (v1 > v2) ? options.fn(this) : options.inverse(this); 
     case '>=': 
      return (v1 >= v2) ? options.fn(this) : options.inverse(this); 
     case '&&': 
      return (v1 && v2) ? options.fn(this) : options.inverse(this); 
     case '||': 
      return (v1 || v2) ? options.fn(this) : options.inverse(this); 
     case '!=': 
      return (v1 != v2) ? options.fn(this) : options.inverse(this); 
     case '!==': 
      return (v1 !== v2) ? options.fn(this) : options.inverse(this); 
     default: 
      return options.inverse(this); 
    } 
}); 

Vorlage

{{#each message}} 
    {{#iff type '==' -1}} 
    <div class='sb-date'>{{text}}</div> 
    {{/iff}} 
    {{#iff type '==' 1}} 
    <div class='sb sb-text sb-{{dir}}'>{{text}}<div class="sb-time">{{time}}</div></div> 
    {{/iff}} 
    {{#iff type '==' 5}} 
    <div class='sb sb-text sb-{{dir}}'>{{text}}<div class="sb-time">{{time}}</div></div> 
    {{/iff}} 
    {{#iff type '==' 6}} 
    <div class='sb sb-text sb-{{dir}}'>{{text}}<div class="sb-time">{{time}}</div></div> 
    {{/iff}} 
    {{#iff type '==' 2}} 
    <div class='sb sb-image sb-{{dir}}'><img alt="" src="media/{{text}}" /><div class="sb-time">{{time}}</div></div> 
    {{/iff}} 
    {{#iff type '>' 2}} 
    <div class='sb sb-file sb-{{dir}}'>media/{{text}}<div class="sb-time">{{time}}</div></div> 
    {{/iff}} 
{{/each}} 
+0

Es sieht für mich wie es funktioniert. Der einzige Grund, warum ich denken könnte, dass Sie keine Ausgabe erhalten, ist, dass Ihre Daten kein "Nachrichten" -Array haben. – 76484

+0

Sie sind richtig, aber ich muss auch {{#ach diesem}} verwenden –

+0

Beachten Sie, dass die Fälle möglicherweise nicht funktionieren für '<', '>', '&', da diese Zeichen in '<', '>', '& übersetzt werden 'aus dem HTML. [Zeichenentitäten] (https://www.w3.org/TR/html4/charset.html#h-5.3.2) – kashiraja

Antwort

1

die Lösung gefunden.

Wenn ein Array Gebrauch vorbei: {{#each this}}