2015-02-07 49 views
0

我正在處理Meteor項目。該項目非常大,所以我需要擴展它。我將列舉一個簡單的例子。我有這種在流星中作出非反應性呼叫

<template name = "test"> 
    <button class="press">press</button> 
    <div> 
     {{#each infos}} 
      {{this.name}} {{this.age}} 
     {{/each}} 

    </div> 
</template> 

因此,我們知道,每當「的相關信息」收集改變時,它會自動在我的模板反映的模板。但是我希望這個模板是非反應性的。

這意味着,當頁面第一次加載時,它應該顯示Mongo中的所有「名稱」和「年齡」細節。之後,即使在集合「info」中進行了更改,它也不應該反映在模板中。

我知道這聽起來很奇怪。但是有沒有辦法做到這一點。就像在不使用find()等首先加載頁面時調用ajax一樣 任何建議都被廣泛接受。

並提前感謝你的所有。

回答

3

你的助手可以使用非反應性find。從文檔:

任何更改集合,更改光標中的文檔將觸發重新計算。要禁用此行爲,請傳遞{reactive:false}作爲查找選項。

這裏的infos幫手的示例實現:

Template.test.helpers({ 
    infos: function() { 
    return Infos.find({}, {reactive: false}); 
    } 
}); 
+0

@avishek我建議這個答案 – Sasikanth 2015-02-07 04:51:47

+0

@大衛您好,感謝。但我希望數據首次顯示。上面的這個解決方案使得它沒有被動反應,甚至沒有第一次完全不顯示數據。 – 2015-02-07 06:03:58

+0

該解決方案假定訂閱數據在模板幫助程序運行之前已準備就緒。如果您使用的是鐵路路由器,則可以通過在呈現包含此模板的路由之前等待訂閱來解決此問題。 – 2015-02-07 06:18:07