我是Handlebar.js的新手,并试图学习它。我有一个场景,我想在额外选项中插入handlebar expression。
在下面的示例代码中,我想根据文本设置每个链接的标题,例如"点击进入Google"
这是我尝试过的,但没人在工作:
title="Click to go (this.text)"
title="Click to go this.text"
title="Click to go "+this.text
数据:
var links=[
{text:"Google",url:"http://www.google.com"},
{text:"Yahoo",url:"http://www.yahoo.com"}
];
示例代码:
<script type="x-handlebars-template" id="links">
{{#each this}}
{{link url text title="Click to go (this.text)"}}<br>
{{/each}}
</script>
完整代码:
Links:
<div class="links"></div>
<script type="text/javascript">
Handlebars.registerHelper("link",function(url,text,options){
var attrs=[];
for(var attr in options.hash){
attrs.push(attr+"=\""+options.hash[attr]+"\"");
}
var escapedURL=Handlebars.escapeExpression(url);
return new Handlebars.SafeString('<a href=\"'+escapedURL+'\"'+attrs+'>'+text+'</a>')
});
</script>
<script type="x-handlebars-template" id="links">
{{#each this}}
{{link url text title="Click to go (text)"}}<br>
{{/each}}
</script>
<script type="text/javascript">
var links=[
{text:"Google",url:"http://www.google.com"},
{text:"Yahoo",url:"http://www.yahoo.com"}
];
var template=Handlebars.compile($("#links").html());
$(".links").append(template(links));
</script>
答案 0 :(得分:0)
看看这个答案:Pass JavaScript object/hash to Handlebars helper? 仅使用帮助程序中的选项,在模板中添加text = title并将文本传递给SafeString。