var numbers = {
'numbers' : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
};
var cart = {
'cart' : [
{
'name' : 'gundam',
'quantity' : 2,
'price' : 2500
},
{
'name' : 'racket',
'quantity' : 1,
'price' : 99
},
{
'name' : 'flash drive',
'quantity' : 20,
'price' : 500
}
]
};
Handlebars.registerHelper('multiply_by_10', function(num){
return num * 10;
});
Handlebars.registerHelper('get_headers', function(obj){
var table_headers = '';
for(var x in obj){
if(obj.hasOwnProperty(x)){
table_headers += "<th>" + x + "</th>";
}
}
return new Handlebars.SafeString(table_headers);
});
Handlebars.registerHelper('subtotal', function(price, qty){
return price * qty;
});
var template = Handlebars.compile($('#helpers').html());
$('.num_container').html(template(numbers));
var cart_template = Handlebars.compile($('#functions').html());
$('.cart_container').html(cart_template(cart));
External resources loaded into this fiddle:
<div class="num_container"></div>
<div class="cart_container"></div>
<script id="helpers" type="text/x-handlebars-template">
{{#each numbers}}
<li>{{multiply_by_10 this}}</li>
{{/each}}
</script>
<script id="functions" type="text/x-handlebars-template">
<table border="1">
<tr>
{{get_headers cart.[0]}}
<th>subtotal</th>
</tr>
{{#each cart}}
<tr>
<td>{{name}}</td>
<td>{{price}}</td>
<td>{{quantity}}</td>
<td>{{subtotal price quantity}}</td>
</tr>
{{/each}}
</table>
</script>