假设我在Meteor中有一个简单的product_orders集合(_id,user_id,user_name,product_name,price_unit,quantity),我想在表格中显示单个用户的所有订单,其中每行应包含:
user_name, product_name, quantity, price_unit, quantity, price_total (price_unit * quantity)
此外,我想显示所有用户订单的总计。
我没有看到在Handlebars.js模板中执行此操作的简单方法,因为Handlebars似乎不支持简单的数学运算。我可以轻松地将product_order的光标返回到我的模板,但是看不到简单的方法来计算模板中的price_total和总计。
我正在考虑创建某种模板帮助器,但不确定这是否正确。这个问题看起来必须有一个简单的&优雅的解决方案。
答案 0 :(得分:15)
是的,你应该写一个帮手。 Handlebars不支持在模板中使用逻辑(这是一种很好的做法,因为它会强制您应用关注点分离模式)。
模板助手如下所示:
Handlebars.registerHelper("grandTotal", function(user_name) {
var grandTotal = some_magic_to_calc_total(user_name);
return grandTotal;
});
然后你可以从你的模板中调用这样的帮助:
<template name="foo">
{{grandTotal user_name}}
</template>
您可以在Handlebars.js docs中了解有关帮助者的更多信息。