meteor – 不再实时更新

刚刚开始使用meteor,并热爱它到目前为止。 我正在做一个变化的教程“待办事项”的应用程序,但与我自己的定制。 我所做的改变或多或less都是:

  • 将目录结构更改为客户端,服务器,公共,lib / collections文件夹

  • 通过collection2模式制作任务集合,而不是使用Tasks.insert(title = text等)dynamic创build任务集合,

所以这个问题。 这些是我的客户端/服务器文件 –

server.js

Meteor.publish("tasks", function () { return Tasks.find({}, {sort: {checked: 1}}); }); 

client.js

 // This code only runs on the client Meteor.subscribe("tasks"); Template.task.events({ "click .toggledone": function () { // Set the checked property to the opposite of its current value Tasks.update(this._id, { $set: {checked: ! this.checked} }); }, "click .delete": function () { Tasks.remove(this._id); } }); 

它正在显示在标准的HTML

  <ul> {{#each tasks}} {{> task}} {{/each}} </ul> 

所以基本上和现在一样,我的服务器正在根据是否检查(完成),升序来sorting任务。

它目前工作,当我点击列表上的一个任务,它变成红色(我的configuration)和注册完成,但列表不会自动sorting像它原来(我做的目录更改之前)。

为了更新,我需要刷新不是我想要的页面。

我是新来的,我认为这与我的发布/订阅有关,但我似乎无法find任何帮助我在线的东西。

任何人都可以为我指出正确的方向吗?

非常感谢。

我认为你在发布/预订命名tasks和模板上循环的收集tasks之间感到困惑。 当你想在模板上渲染任务时,应该从助手中返回。 考虑到发布/订阅使客户端上可用的数据库的正确部分,然后从该部分检索正确的数据显示。

通常情况下,我会像SQL查询一样对发布进行命名约定,以便于解释

 Meteor.publish("select-from-tasks", function () { return Tasks.find({}); }); 

接着,

 Meteor.subscribe("select-from-tasks"); 

你将需要一个帮手来返回正确的数据,就像我上面所说的那样

 Template.task.helpers({ tasks: function() {return Tasks.find({}, {sort: {checked: 1}});} });