meteor - Iron-router 在渲染之前等待 Collection.findOne() 作为数据对象

标签 meteor iron-router

我正在寻找一种解决方案,即 Iron-router 在渲染之前等待我的集合上的成功查找方法。

我的路线是这样的:

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});
        }
    });

这工作正常。似乎 Iron-router 正在等待 Collection 的订阅来为客户端取回正确的 Document。但是我在模板中需要的数据对于 findOne 函数有延迟。
Template.businessItemItem.rendered = function () {
    console.log(Router.current().data()); // undefined
    window.setTimeout(function(){
      console.log(Router.current().data()); // [Object]
    }, 1000);
}

解决方案
对于有同样问题的每个人。只需为您的路线添加“ Action ”方法,如下所示:
action : function () {
   if (this.ready()) this.render();
}

使用这种方法,一切对我来说都很好。

最佳答案

我不确定我是否遇到了您的问题,但是如果我遇到了,您应该阅读 Controlling subscriptions ,尤其是 Router.onBeforeAction('loading') .现在,您正在重新发明轮子。

关于meteor - Iron-router 在渲染之前等待 Collection.findOne() 作为数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038436/

相关文章:

javascript - meteor 批量插入仅插入最后一项

javascript - 使用iron-router时,onRender什么时候执行?

javascript - 使用铁路由器前如何跳转2页?

meteor - 将数据从 Iron 路由器传递到模板助手

meteor - 订阅集合中的更改但不在模板中

javascript - 未定义不是函数——Meteor智能包

javascript - MongoDB 返回错误 "Can' t canonicalize query"for sort function

javascript - 在 Meteor Mongo 中寻找值(value)

javascript - 铁 :router working Weird - sends me to template then goes back

javascript - 更改 Meteor 中的默认/提交路由