这是我的代码(我不知道两天的错误在哪里。)。当我把.task和.Done助手放在一起时,它就不再显示模板了。我知道我在某个地方有错误,但我已经两天不能指出它了。我想要的是从数据库中提取任务通过过滤器运行它们。提前感谢您的帮助。
<template name="Done">
<li>
<div>
<span class="text">{{title}}</span>
</div>
</li>
</template>
<template name="task">
<li>
<button class="completed">Completed</button>
<!--<li><input type="text" name="task" class="edit"></li>!-->
<span class="text" onclick="true">{{title}}</span>
<button class="saveItem">Save</button><button class="cancelItem">Cancel</button>
<button class="editItem">Edit</button><button class="delete">Delete</button>
</li>
<div>
<h1>To do list</h1>
<ul>
{{#each tasks}}
{{>task}}
{{/each}}
</ul>
</div>
<div>
<h1>Done list</h1>
<ul>
{{#each tasks}}
{{>Done}}
{{/each}}
</ul>
</div>
.js文件
Meteor.subscribe("tasks");
Template.body.helpers({
tasks: function(){
return Tasks.find();
}});
Template.Done.helpers({
taskDone: function () {
return Tasks.find({}, {fields: {completed: "yes"}});
}
});
Template.task.helpers({
taskNotDone: function(){
return Tasks.find({completed: "no"});
}
});
Meteor.publish("tasks", function () {
return Tasks.find({});
});
答案 0 :(得分:1)
首先,我强烈建议将completed
字段存储为布尔值而不是字符串值。其次,辅助函数taskDone
和taskNotDone
应属于body
模板。此外,fields
修饰符通常用于限制publishing的某些字段,而不是用于查询文档。
例如,如果要发布所有任务,减去completed
信息,发布功能将如下所示:
Meteor.publish("tasks", function () {
return Tasks.find({}, {fields: {completed: 0}});
});
相反,如果您只想返回已完成的Tasks
个文档,您将获得以下查询:
Tasks.find({completed: true});
此代码可能会解决您的问题:
<body>
<div>
<h1>To do list</h1>
<ul>
{{#each tasksToDo}}
{{>task}}
{{/each}}
</ul>
</div>
<div>
<h1>Done list</h1>
<ul>
{{#each taskDone}}
{{>done}}
{{/each}}
</ul>
</div>
</body>
<template name="done">
<li>
<div>
<span class="text">{{title}}</span>
</div>
</li>
</template>
<template name="task">
<li>
<button class="completed">Completed</button>
<span class="text" onclick="true">{{title}}</span>
<button class="saveItem">Save</button>
<button class="cancelItem">Cancel</button>
<button class="editItem">Edit</button>
<button class="delete">Delete</button>
</li>
</template>
if (Meteor.isClient) {
Template.body.helpers({
tasksToDo: function() {
return Tasks.find({
completed: false
});
},
taskDone: function() {
return Tasks.find({
completed: true
});
}
});
}
这是MeteorPad。