流星铁路由器从模板助手中的参数获取当前路径

时间:2014-11-10 18:38:29

标签: meteor iron-router

在模板助手中,我从Iron.Routeriron:router)获取当前路径,如下所示:

Router.current().route.path()

除非路径路径确实包含参数(例如/client/:_id/edit),否则这样可以正常工作。在这种情况下,path()函数返回null

当路由包含参数时,如何获取模板助手中的当前路径?

我使用Meteor 1.0和iron:router 1.0.1

2 个答案:

答案 0 :(得分:14)

我认为你的路线中的_id来自一个集合,你需要传递route.path路线所依据的文件。

Router.route("/client/:_id/edit",{
  name:"edit",
  data:function(){
    return MyCollection.findOne(this.params._id);
  }
});

<template name="edit">
  {{myHelper}}
  {{pathFor route="edit"}}
</template>

Template.edit.helpers({
  myHelper:function(){
    return Router.current().route.path(this);
  }
});

我建议您使用默认的pathFor帮助程序在应用程序中呈现URL。

https://github.com/EventedMind/iron-router/blob/devel/Guide.md#pathfor

此帮助程序使用当前数据上下文(在本例中为MyCollection.findOne(this.params._id))来提取路径参数。

但您也可以使用路径中的路径方法,该方法将您想要生成路径的文档作为第一个参数。

答案 1 :(得分:8)

尝试以下方法:

Iron.Location.get().path;

当我需要带参数的路径时,对我来说很好。但是,不会返回当前路线。

请参阅Meteor Iron Router does not get Current Path from Route