我正在寻找一种解决方案,铁路由器在渲染之前正在等待我的集合上的成功查找方法。
我的路线如下:
this.route('business', {
path : '/business/:type/:_id',
waitOn : function () {
return Meteor.subscribe('business', this.params._id);
},
data : function () {
return Business.findOne({_id: this.params._id});
}
});
这很好用。铁路由器似乎在等待Collection的订阅,以便为客户端获取正确的文档。但是我在模板中需要的数据会延迟findOne函数。
Template.businessItemItem.rendered = function () {
console.log(Router.current().data()); // undefined
window.setTimeout(function(){
console.log(Router.current().data()); // [Object]
}, 1000);
}
解决方案 对于每个有同样问题的人。只需添加"操作"您的路线的方法如下:
action : function () {
if (this.ready()) this.render();
}
使用这种方法一切正常。
答案 0 :(得分:2)
我不确定我是否会遇到您的问题,但如果我这样做,您应该阅读Controlling subscriptions,尤其是Router.onBeforeAction('loading')
。现在,你正在重新发明轮子。