如何单独修改和显示集合中的项目

时间:2014-01-18 20:48:01

标签: meteor

我有一个名为Sites的集合:

{site:“a”,价格:100,货币:美元} {site:“b”,价格:70,货币:EUR} {site:“c”,价格:300,货币:CNY}

在我的模板中,我有:

{{#each sites}}
{{site}}
{price}}
{{/each}}

我的助手这样做:

Template.prices.sites = function() {     return Sites.find(); };

为用户提供了一个选择选项,我希望能够根据选择以单一货币显示价格。

因此,如果用户选择EUR,则物品的价格:{site:“a”,price:100,currency:USD}将显示为价格* eur_usd_exchange_rate

我可以通过为每个项目创建单独的模板变量并为每个项目创建不同的帮助程序来实现此目的。

但我希望能够使用单个助手。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

我建议您创建一个site模板:

<template name="prices">
  {{#each sites}}
    {{> site}}
  {{/each}}
</template>

<template name="site">
  {{site}}
  {{price}}
</template>

这使您可以访问帮助程序中的this.pricethis.currency

Template.site.helpers({
  price: function() {
    var selectedCurrency = Session.get('currency');
    return this.price * exchangeRate(selectedCurrency, this.currency);
  }
});

这假定所选货币存储在currency会话变量中。然后,您所要做的就是实现exchangeRate功能,您应该全部设置。