2016-09-21 58 views
2

我在理解氣流反應性方面存在問題。 輔助工程完美地工作,當一個任務被添加它被呈現在模板中。 但是,自動運行不起作用,任務僅在第一次記錄。自動運行中的流星反應

助手和自動運行都是反應式計算,所以兩者都應該在任務集合更改時運行?

import { Template } from 'meteor/templating'; 
import { Tasks } from '../../api/tasks'; 

import './day.html'; 

Meteor.subscribe('tasks'); 

Tracker.autorun(function() { 
    var tasks = Tasks.find({}); 

    console.log(tasks); 
}); 

Template.day.helpers({ 
    tasks() { 
     return Tasks.find({}); 
    } 
}); 

回答

1

根據Meteor docs

光標是一個反應性數據源。在客戶端,第一次在反應計算(例如模板或自動運行)中檢索具有獲取,映射或forEach的遊標文檔時,Meteor將註冊對基礎數據的依賴關係。

隨着助手你在模板上迭代,所以你註冊的依賴關係,但Collection.find()你沒有。如果您嘗試使用Tasks.find().fetch()Tasks.find().count(),那麼每次集合發生更改時都會看到打印結果,因爲您現在有一個依賴項,這將引發重新計算。

+0

這應該是公認的答案。 –

+0

除了即使包含跟蹤器,它仍然不起作用。 我做了: 從'meteor/tracker'導入{Tracker}; – tmas

+0

謝謝!我之前沒有閱讀過編輯。 – tmas