刚开始使用Meteor,我很喜欢它。 我正在修改教程" todo"应用程序,但我自己的自定义。 或多或少我到目前为止做出的改变是:
将目录结构更改为客户端,服务器,公共,lib /集合文件夹
通过collection2架构创建任务集合,而不是使用Tasks.insert(title = text等等)动态创建
所以问题。 这些是我的客户端/服务器文件 -
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>
基本上就像现在一样,我的服务器根据是否检查(已完成),升序来对任务进行排序。
它当前工作,当我单击列表上的任务时,它变为红色(我的配置)并注册为已完成,但列表不会像原来那样自动排序(在我更改目录之前)
要更新它,我需要刷新不是我想要的页面。
我是新手,我认为这与我的发布/订阅有关,但我似乎无法找到任何可以帮助我上网的内容。
有人能指出我正确的方向吗?
非常感谢。
答案 0 :(得分:2)
我认为您对名为using Windows.Storage;
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync("ms-appdata:///local/file.txt");
的发布/订阅与模板上的循环的集合tasks
感到困惑。如果要在模板上呈现任务,则应从帮助程序返回该任务。考虑发布/订阅使客户端上的数据库的正确部分可用,然后从该部分检索要显示的正确数据。
通常,我为SQL查询创建发布的命名约定,因此更容易解释
tasks
然后,
Meteor.publish("select-from-tasks", function () {
return Tasks.find({});
});
你需要有一个助手才能返回正确的数据,就像我上面所说的那样
Meteor.subscribe("select-from-tasks");