2015-11-01 88 views
3

在我的模板我有這樣的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()

回答

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一次,然後在其結果的上下文中運行嵌套的代碼。

+0

太好了!它運行正常,謝謝! –

+0

很高興聽到這個消息。如果它解決了問題,您可以將答案標記爲正確。 – MasterAM