7

假设我在 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 和总计的简单方法。

我正在考虑创建某种模板助手,但不确定这是否是正确的方向。这个问题看起来必须有一个简单而优雅的解决方案。

4

1 回答 1

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 文档中阅读有关帮助程序的更多信息。

于 2013-01-20T16:04:14.810 回答