我正在做一个列表/任务应用程序,我可以选择使用会话向我显示好任务的列表来存储我点击的列表。 使用Meteor任务板教程,我可以计算我的项目。 问题是计数系统与所有列表无关,而只与列表有关。
我无法理解如何计算每个列表的项目,并在每个列表项目前面显示计数器。 在教程中,计数器在Session中,所以我是否必须在集合中创建一个新的“计数器”,或者我可以保持会话吗?
一些代码: List.js
if (Meteor.isServer) {
Meteor.publish('lists', function listsPublication() {
return Lists.find({
$or: [
{private: { $ne: true}},
{owner: this.userId},
],
});
});
}
Meteor.methods({
Template.list.helpers({
incompleteCount() {
return Tasks.find({ listId: Session.get('listId'), checked: { $ne: true } }).count();
},
Template.list.events({
'click .list-selected' (event) {
event.preventDefault();
var list = $(event.currentTarget).attr('list-id');
Session.set('listId', list);
},
Body.js
Template.body.helpers({
tasks() {
const instance = Template.instance();
if (instance.state.get('hideCompleted')) {
return Tasks.find({
listId: Session.get('listId'),
checked: { $ne: true },
}, { sort: Session.get("sort_order") });
}
return Tasks.find({listId: Session.get('listId')}, { sort: Session.get("sort_order")});
},
lists() {
return Lists.find({}, { sort: { createdAt: -1 } });
},
});
提前致谢
答案 0 :(得分:0)
感谢@CodeChimp,我可以找到在我的助手中使用param的方式:
incompleteCount(listId) {
return Tasks.find({ listId: listId, checked: { $ne: true } }).count();
},
模板(使用玉石):
.ui.teal.left.pointing.label
span {{incompleteCount this._id}}
使用我之前在一个列表中执行的搜索,但我刚刚添加了param而不是只获取活动列表的session.get()...
由于