当事件触发或呈现模板时,有没有办法在meteor中订阅?我试图获得一个消息弹出窗口并在发生这种情况时订阅所有用户名。
尝试:
Template.newMessage.rendered = function(){
Meteor.subscribe("allUsernames");
}
和
Template.layout.events({
"click #new-message": function(e, t){
$("#styledModal").modal();
Meteor.subscribe("allUsernames");
}
});
既不工作,也没办法,或者我必须使用不同的路线?我正在使用铁路由器
答案 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.
}