如何避免Meteor助手多次运行

时间:2015-11-01 16:03:00

标签: javascript meteor

在我的模板中,我有这个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()一次。

1 个答案:

答案 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一次,然后在其结果的上下文中运行嵌套代码。