Meteor Subscribe不使用router.current()。params

时间:2016-07-08 12:17:35

标签: javascript meteor

当我尝试从集合中获取对象时,我遇到了问题,订阅功能未按预期工作。例如:

客户端:

JS

 Template.Main.onCreated(function(){     
   var num = Router.current().params.taskid;    
   console.log(num);
   this.subscribe('getTransaction',num);
 });

服务器:

 Meteor.publish('getTransaction', function(taskid){ 
   return Transactions.find({taskid:taskid});
 });

如果我保持原样,我无法显示任何内容,控制台中显示的值为9.但是,如果我更改变量" num"对于显式值:9它按预期工作。

你知道为什么订阅不适用于这种情况吗?

我真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您的问题可能是路由器尚未准备好"在创建模板的那一刻。您是否已将订阅放在路线特定选项中(我认为您使用的是铁路由器?):

Router.route('/getTransaction/:_id', {

    ......
     subscriptions: function() {

        // add the subscription to the waitlist
        this.subscribe('getTransaction', this.params._id).wait();
      },
    .................................  
});

您可以在此处找到更多选项: http://iron-meteor.github.io/iron-router/#wait-and-ready

如果不起作用,请尝试延迟"通过使用setTimeout()函数进行一点订阅。像这样:

Meteor.setTimeout(function(){
  this.subscribe('getTransaction',num);
}, 100);