我有一个名为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
我可以通过为每个项目创建单独的模板变量并为每个项目创建不同的帮助程序来实现此目的。
但我希望能够使用单个助手。我怎么能这样做?
答案 0 :(得分:1)
我建议您创建一个site
模板:
<template name="prices">
{{#each sites}}
{{> site}}
{{/each}}
</template>
<template name="site">
{{site}}
{{price}}
</template>
这使您可以访问帮助程序中的this.price
和this.currency
:
Template.site.helpers({
price: function() {
var selectedCurrency = Session.get('currency');
return this.price * exchangeRate(selectedCurrency, this.currency);
}
});
这假定所选货币存储在currency
会话变量中。然后,您所要做的就是实现exchangeRate
功能,您应该全部设置。