Handlebars:组合来自JSON的值以为模板创建新输入

时间:2016-12-20 18:28:20

标签: javascript html json templates

我创建了一个直接从JSON显示数据的Handlebars模板。但是,我还需要显示数据不是直接在JSON中,而是必须从其中的不同值连接。

例如,如果我有JSON:

{
 "1": {"name": "Bob", "surname": "Bradley", "domain": "gmail"},
 "2": {"name": "Rob", "surname": "Smedley", "domain": "yahoo"}
}

我希望Handlebars模板包含名称,姓氏和电子邮件从值构建,如下所示:

把手模板

<script id="user_template" type="text/x-handlebars-template">
    {{#each this}}
    <li>
        <p>{{name}}</p>
        <p>{{surname}}</p>
        <p>{{email}}</p> // I want "name.surname@domain.com" here
    </li>
    {{/each}}
</script>

我在Javascript中使用它的方式(没有现在出现问题的电子邮件部分)是:

var raw_template = $('#user_template').html();

// Compile that into an handlebars template
var template = Handlebars.compile(raw_template);

// Retrieve the placeHolder where the Users will be displayed
var placeHolder = $("#users_table");

var html = template(users); // "users" is a JSON object received from AJAX controller

// Render the posts into the page
placeHolder.append(html);

现在,以某种方式将JSON中的值组合到另一个值(电子邮件)并将其放在Handlebars模板中的(好)方法是什么?

1 个答案:

答案 0 :(得分:0)

你可以建立这个帮手

Handlebars.registerHelper('buildEmail', 
    function(name, lastName, domain, options) {
        return name + lastName + '@' + domain + '.com';
    });

然后在模板上调用它。

{{#each this}}
<li>
    <p>{{name}}</p>
    <p>{{surname}}</p>
    <p>{{{buildEmail name surname domain}}}</p>
</li>
{{/each}}