handlebars:将变量传递给每个内部的部分
handlebars: Passing variable to partial inside each
我使用块助手 #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}}
link部分:
<a href="{{link}}" class="btn-text {{addClass}}">{{label}}</a>
输出为:
<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] 仅用于测试并且有效
[2] 如果我想在局部中传递它,它不会呈现我的参数
更新
现在这是我的帮手,可以用 url.
扩展我的 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 );
});
link部分:
{{#updateLink url="letters/"}}
{{>button link=this label=this btn="btn-text" addClass='-large'}}
{{/updateLink}}
当您已经在一组大括号内时,您不能使用 {{}}
大括号语法计算数据成员。但是,您可以简单地引用该成员,而不用引号将其括起来,它将被计算:
{{>button btn="btn-text" addClass='-large' link=this label=this}}
您会注意到我上面的示例不包括 link
值的 "letter/" 前缀。 Handlebars 没有办法连接字符串。为此,您可以选择以下选项之一:
- 使用帮手(你自己的或别人的)。
- 将前缀作为附加参数传递给您的部分。
- 在部分模板中对前缀进行硬编码。
- 在模板数据中包含连接的字符串 (
a-z.letters
)。
我使用块助手 #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}}
link部分:
<a href="{{link}}" class="btn-text {{addClass}}">{{label}}</a>
输出为:
<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] 仅用于测试并且有效
[2] 如果我想在局部中传递它,它不会呈现我的参数
更新
现在这是我的帮手,可以用 url.
扩展我的 hrefHandlebars.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 );
});
link部分:
{{#updateLink url="letters/"}}
{{>button link=this label=this btn="btn-text" addClass='-large'}}
{{/updateLink}}
当您已经在一组大括号内时,您不能使用 {{}}
大括号语法计算数据成员。但是,您可以简单地引用该成员,而不用引号将其括起来,它将被计算:
{{>button btn="btn-text" addClass='-large' link=this label=this}}
您会注意到我上面的示例不包括 link
值的 "letter/" 前缀。 Handlebars 没有办法连接字符串。为此,您可以选择以下选项之一:
- 使用帮手(你自己的或别人的)。
- 将前缀作为附加参数传递给您的部分。
- 在部分模板中对前缀进行硬编码。
- 在模板数据中包含连接的字符串 (
a-z.letters
)。