在模板助手中,我从Iron.Router(iron:router
)获取当前路径,如下所示:
Router.current().route.path()
除非路径路径确实包含参数(例如/client/:_id/edit
),否则这样可以正常工作。在这种情况下,path()
函数返回null
。
当路由包含参数时,如何获取模板助手中的当前路径?
我使用Meteor 1.0和iron:router
1.0.1
答案 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;
当我需要带参数的路径时,对我来说很好。但是,不会返回当前路线。