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}});} });