把手:将变量传递给每个部分内部

Gre*_*nov 3 parameters partials handlebars.js

我用块助手创建了一个列表#each,但我不能将变量传递给我的每个循环中的部分.

{{#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}}
Run Code Online (Sandbox Code Playgroud)

链接部分:

<a href="{{link}}" class="btn-text {{addClass}}">{{label}}</a>
Run Code Online (Sandbox Code Playgroud)

输出是:

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

[1]仅用于测试,它的工作原理

[2]如果我想将它传递到局部内部它不会渲染我的参数

UPDATE

所以这是我的助手,现在用网址扩展我的href.

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 ); 
});
Run Code Online (Sandbox Code Playgroud)

链接部分:

{{#updateLink url="letters/"}}
    {{>button link=this label=this btn="btn-text" addClass='-large'}} 
{{/updateLink}}
Run Code Online (Sandbox Code Playgroud)

764*_*484 7

{{}}当您已经在一组大括号内时,不能使用大括号语法来评估数据成员.但是,您可以简单地引用该成员,而不将其包装在引号中,并且将对其进行评估:

{{>button btn="btn-text" addClass='-large' link=this label=this}}
Run Code Online (Sandbox Code Playgroud)

您会注意到我上面的示例不包含值的"letter /"前缀link.Handlebars没有连接字符串的方法.要实现此目的,您可以选择以下选项之一:

  • 使用帮助者(您自己或其他人).
  • 将前缀作为附加参数传递给partial.
  • 在部分模板中对前缀进行硬编码.
  • 在模板数据中包含连接的字符串(a-z.letters).