2016-07-27 14 views
3

Ich erstellen eine Liste mit dem Block Helper #each, aber ich kann Variablen nicht an meine teilweise innerhalb meiner jede Schleife übergeben.Lenker: Passing Variable zu teilweise innerhalb von jedem

{{#each a-z.letters}} 
    {{this}} /*[1]*/ 
    <li class="list-inline__item"> 
     {{>button btn="btn-text" addClass='-large' link='letter/{{this}}' label='{{this}}'/*[2]*/}} 
    </li> 
{{/each}} 

Der Link Teil:

<a href="{{link}}" class="btn-text {{addClass}}">{{label}}</a> 

Die Ausgabe lautet:

<ul class="list-inline"> 
    A /*[1]*/ 
    <li class="list-inline__item"> 
     <a href="letter/{{this}}/*[2]*/" class="btn-text -large">{{this}}/*[2]*/</a> 
    </li> 
    .... 

[1] Nur für die Prüfung und es funktioniert

[2] Wenn ich geben wollen es in einem partiellen es macht nicht meine params

UPDATE

Also das ist mein Helfer jetzt, um meine href mit einer URL zu erweitern.

Handlebars.registerHelper('updateLink', function(options){ 
    var insertAt = "href="; 
    var content = options.fn(this).trim(); 
    var pos = content.indexOf(insertAt) + insertAt.length+1; // +1 for the quotation marks 
    content = content.slice(0, pos) + options.hash.url + content.slice(pos, content.length); 
    return new Handlebars.SafeString(content); 
}); 

Der Link Teil:

{{#updateLink url="letters/"}} 
    {{>button link=this label=this btn="btn-text" addClass='-large'}} 
{{/updateLink}} 

Antwort

7

Sie können nicht die {{}} Klammern Syntax verwenden, um Datenelemente zu bewerten, wenn Sie bereits in einer Reihe von Klammern sind. Sie können jedoch die Bezugs einfach das Element, ohne sie in Anführungszeichen Einwickeln, und es wird bewertet:

{{>button btn="btn-text" addClass='-large' link=this label=this}} 

Sie werden feststellen, dass mein Beispiel oben enthält nicht den „Brief /“ Präfix zu dem link Wert. Lenker hat keine Möglichkeit, Saiten zu verketten. Um dies zu erreichen, können Sie eine der folgenden Optionen wählen:

  • Verwenden Sie einen Helfer (Ihren eigenen oder jemand anderen).
  • Übergeben Sie das Präfix als zusätzlichen Parameter zu Ihrem Partial.
  • Hard-Code das Präfix in der partiellen Vorlage.
  • Fügen Sie die verkettete Zeichenfolge in Ihre Vorlagedaten ein (a-z.letters).