好的,这有点奇怪......
我在服务器端获得了这些方法......
Meteor.publish('todos', function () {
return Todos.find({userId: this.userId},{sort:{createdAt:-1}});
});
Meteor.methods({
editTodo: function(todoId) {
Todos.update(todoId, {$set: {checked: !this.checked}});
}
});
这是客户端的调用....
Template.list.helpers({
todos: function(){
Meteor.subscribe('todos');
return Todos.find({});
}
});
Template.list.events({
"click .toggle-check": function(){
Meteor.call('editTodo',this._id);
}});
问题在于,当点击“.toggle-check”时......“已检查”布尔值被触发但从未脱离....是this.checked(在{checked:!this.checked中})不是指立即从集合中读取的字段? 或者我订阅数据时可能会出错?
请帮忙!
答案 0 :(得分:1)
我认为该问题与您建议的订阅注册有关 - 更具体地说,是您在Meteor.subscribe()
函数中调用Template.helpers
。
尝试将订阅移至较早的页面或模板事件,例如Template.body.onCreated()
或Template.list.onCreated()
(视您的要求而定)。
Meteor文档中有一个很好的例子:https://www.meteor.com/tutorials/blaze/publish-and-subscribe(见第10.3节)。