MeteorJS - 列表项在实现发布/订阅和方法/调用后不更新

时间:2017-02-01 03:52:07

标签: meteor methods publish subscribe

好的,这有点奇怪......

我在服务器端获得了这些方法......

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中})不是指立即从集合中读取的字段? 或者我订阅数据时可能会出错?

请帮忙!

1 个答案:

答案 0 :(得分:1)

我认为该问题与您建议的订阅注册有关 - 更具体地说,是您在Meteor.subscribe()函数中调用Template.helpers

尝试将订阅移至较早的页面或模板事件,例如Template.body.onCreated()Template.list.onCreated()(视您的要求而定)。

Meteor文档中有一个很好的例子:https://www.meteor.com/tutorials/blaze/publish-and-subscribe(见第10.3节)。