7

Meteorに単純なproduct_ordersコレクション(_id、user_id、user_name、product_name、price_unit、quantity)があり、各行に含まれるべきテーブルに1人のユーザーのすべての注文を表示したいとします。

user_name, product_name, quantity, price_unit, quantity, price_total (price_unit * quantity)

さらに、すべてのユーザーの注文の総計を表示したいと思います。

Handlebarsは単純な数学演算をサポートしていないように見えるため、Handlebars.jsテンプレートでこれを行う簡単な方法がわかりません。product_orderのカーソルをテンプレートに簡単に戻すことはできますが、テンプレートでprice_totalと総計を計算する簡単な方法がわかりません。

ある種のテンプレートヘルパーを作成することを考えていますが、それが正しい方向であるかどうかはわかりません。この問題は、シンプルでエレガントな解決策が必要なようです。

4

1 に答える 1

15

はい、ヘルパーを書く必要があります。ハンドルバーは、テンプレートでのロジックの使用をサポートしていません(関心の分離パターンを適用する必要があるため、これは良い習慣です)。

テンプレートヘルパーは次のようになります。

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 に答える