我是 Handlebar.js 的新手并尝试学习它。我有一个场景,我想插入 handlebar expression在额外选项中。
在下面的示例代码中,我想根据每个链接的文本设置其标题,例如“Click to go 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>
最佳答案
看看这个答案:Pass JavaScript object/hash to Handlebars helper? 仅使用助手中的选项,在模板中添加 text=title 并将文本传递给 SafeString。
关于javascript - 如何访问选项内的 Handlebars 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27373654/