javascript - 如何访问选项内的 Handlebars 表达式?

标签 javascript html handlebars.js

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

相关文章:

javascript - 简单的嵌套 Handlebars foreach 不起作用

javascript - Javascript 中给定整数的按位枚举

javascript - 检查模拟时钟的指针位置是否正确

javascript - NodeJS/Express/ExpressHandlebars - 全局辅助函数

html - 如何将部分垂直对齐显示为内联 block

javascript - ngRepeat 在另一个中继器值的数组上

javascript - 为什么handlebars.js 返回空括号?

javascript - 如何基于路由在组件内部渲染组件

javascript - 在第一个 <br> 之前设置文本区域中的文本样式

Javascript 将选项链接到 else if