Javascript Meteor:在页面加载时获取路由参数

Javascript Meteor:在页面加载时获取路由参数,javascript,meteor,Javascript,Meteor,这是我的问题: 我试图在加载页面以加载一个实体时进行API调用,将该实体的一些属性保存到会话中-因此我基本上只进行一次调用,并在需要时使用这些属性 但是当我试图从路由中获取id参数时,脚本开头的Router.current(),它是空的 另一方面,当我在助手上调用相同的路由器.current()时,我可以得到我的参数 在调用我的助手之前,知道有什么问题/如何获取此参数吗 这是我的html,我将在其中使用以下属性之一: <input type="text" name="name" id="a

这是我的问题: 我试图在加载页面以加载一个实体时进行API调用,将该实体的一些属性保存到会话中-因此我基本上只进行一次调用,并在需要时使用这些属性

但是当我试图从路由中获取id参数时,脚本开头的
Router.current()
,它是空的

另一方面,当我在
助手
上调用相同的
路由器.current()
时,我可以得到我的参数

在调用我的
助手之前,知道有什么问题/如何获取此参数吗

这是我的html,我将在其中使用以下属性之一:

<input type="text" name="name" id="addCampaignInputName" value="{{currentCampaignName}}" placeholder="New Campaign Name">

只有在模板的订阅/参数就绪后,才能加载模板,也许它可以解决您的问题(特别是将参数附加到模板数据对象的部分)。

这是因为模板帮助程序总是在反应式计算中运行,而
Router.current()
恰好是一个反应式数据源,所以当它准备好时,帮助程序将以正确的值重新运行

由于您使用的是
iron:router
,因此可以使用,因为它们可以绑定到特定路由,并在路由参数可用时执行(使用
this.params


您的第一个函数可能在加载任何其他函数之前在页面上运行,并且它不知道什么是
Router
。在加载模板帮助程序之前设置这些的最佳方法是使用iron router的
onBeforeAction
hook:

Router.route('/', {
  name: 'home',
  onBeforeAction: function() {
    //set your session variables here
    this.next();
  }
});
这样,路由器应该加载已经设置了会话变量的页面

Router.route("/my-route", {
  name: "myRoute",
  onBeforeAction: function(){
    Meteor.call("getApiCampaignsById", this.params.id, function(error, results) {
      Session.set('currentCampaignDetailsName', results.data.name);
      Session.set('currentCampaignDetailsTrackingMethod', results.data.tracking_method_id);
      Session.set('currentCampaignDetailsCampaignTypeId', results.data.campaign_type_id);
    });
    //
    this.next();
  }
});
Router.route('/', {
  name: 'home',
  onBeforeAction: function() {
    //set your session variables here
    this.next();
  }
});