如何在选项中访问车把表达式?

时间:2014-12-09 07:37:47

标签: javascript html handlebars.js

我是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>

1 个答案:

答案 0 :(得分:0)

看看这个答案:Pass JavaScript object/hash to Handlebars helper? 仅使用帮助程序中的选项,在模板中添加text = title并将文本传递给SafeString。