在我的模板中我有这个 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()
。
最佳答案
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
,然后在其结果的上下文中运行嵌套代码。
关于javascript - 如何避免 Meteor 助手运行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33464179/