自动运行中的流星反应性

时间:2016-09-21 13:52:16

标签: meteor meteor-blaze

我在理解Meteors的反应性方面遇到了问题。 帮助程序完美地工作,当添加任务时,它将在模板中呈现。 但是,自动运行不起作用,任务仅在第一次记录。

helper和autorun都是反应式计算,所以当Tasks集合发生变化时,它们都应该运行吗?

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 个答案:

答案 0 :(得分:1)

根据Meteor docs

  

游标是一个反应数据源。在客户端,第一次在反应计算(例如,模板或自动运行)中使用fetch,map或forEach检索游标文档时,Meteor将注册对基础数据的依赖。

使用帮助程序,您将在模板上进行迭代,以便注册依赖项,但是如果使用Collection.find(),则不会。如果您尝试Tasks.find().fetch()Tasks.find().count(),每次集合中发生更改时都会看到打印结果,因为您现在有依赖关系,这将触发重新计算。