2016-12-20 39 views
0

我已經創建了一個Handlebars模板,它直接顯示來自JSON的數據。但是,我也需要顯示的數據不是直接在JSON中,而是必須從其中的不同值連接起來。把手:結合JSON的值爲模板創建一個新的輸入

舉個例子,如果我有JSON:

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

我想車把模板包含名,姓,和值構建的電子郵件,像這樣的:

把手模板

<script id="user_template" type="text/x-handlebars-template"> 
    {{#each this}} 
    <li> 
     <p>{{name}}</p> 
     <p>{{surname}}</p> 
     <p>{{email}}</p> // I want "[email protected]" here 
    </li> 
    {{/each}} 
</script> 

我在Javascript中使用這種方式(無線thout這是目前問題的電子郵件部分)爲:

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值以某種方式結合到另一個值(電子郵件),並把它在把手模板?

+0

您需要使用電子郵件或將它存儲在某個地方,還是隻是爲了顯示?如果只是建立並顯示沒有其他目的,你可以爲這項工作建立一個把手幫手! – rule

回答

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}}