在我的模板中,我有这个HTML:
<input id="name" type="text" value="{{card.name}}">
<input id="prefix" type="text" value="{{card.prefix}}">
<input id="phone" type="tel" value="{{card.phone}}">
和这个JavaScript
Template.cardForm.helpers({
card: function() {
return getCard();
}
});
var getCard = function() {
console.log("I'm here !!!");
return Cards.findOne({_id: cardId});
}
当我运行我的应用时,console.log
显示“我在这里!!!” 3次,我认为Ecards.findOne()
正在执行3次。
我该如何避免这些额外的电话?
我想获取卡片对象以填充{{card.name}}
,{{card.prefix}}
和{{card.phone}}
,但只需拨打getCard()
一次。
答案 0 :(得分:3)
card
助手多次执行,因为评估模板代码中出现card
不止一次。
避免在您面临的情况下重复调用的模式是使用#with
:
{{#with card}}
<input id="name" type="text" value="{{name}}">
<input id="prefix" type="text" value="{{prefix}}">
<input id="phone" type="tel" value="{{phone}}">
{{/with}}
这将调用card
一次,然后在其结果的上下文中运行嵌套代码。