Meteor订阅事件/渲染

时间:2014-07-21 14:46:21

标签: javascript jquery meteor publish-subscribe

当事件触发或呈现模板时,有没有办法在meteor中订阅?我试图获得一个消息弹出窗口并在发生这种情况时订阅所有用户名。

尝试:

Template.newMessage.rendered = function(){
    Meteor.subscribe("allUsernames");
}

Template.layout.events({
    "click #new-message": function(e, t){
        $("#styledModal").modal();
        Meteor.subscribe("allUsernames");
    }
});

既不工作,也没办法,或者我必须使用不同的路线?我正在使用铁路由器

2 个答案:

答案 0 :(得分:0)

我试图理解你为什么要订阅这个过程的后期状态?

我建议您在IronRouter的waitOn属性中订阅。 如果您使用waitOn属性订阅所有用户,在该路由中,您只需在弹出窗口中显示它们=)

7流星原则中的1个原则是: 延迟补偿。在客户端上,使用预取和模型模拟使其看起来像是与数据库的零延迟连接。

源: http://docs.meteor.com/#sevenprinciples

希望这有帮助, 亚历

答案 1 :(得分:0)

您可以尝试使用Deps和Session(虽然您的代码也可以使用,也许您的出版物有问题?)。

在你的主模板渲染函数中输入:

Template.layout.rendered = function() {
    Session.set('getAllUsers',false);
    Deps.autorun(function () {
        if(Session.get('getAllUsers' == true)
            Meteor.subscribe('allUsernames');
    })
}

然后在打开用户列表的模板中:

Template.newMessage.rendered = function(){
    Session.set('getAllUsers',true); //this should trigger Deps.autorun and subscribe.
}