我有一个包含参数的路由,我需要从许多不同的模板中访问它。下面是一个路由示例,有几条路径在它更改的_occasionnId参数之后非常相似:
例如:
路线1:/ occasion /:_ occasionId / cards /
路由器2:/ occasion /:_ occasionId / tables /
以下是我对每条路线的完整代码,唯一真正改变的是路径路径和模板。
Router.route('/occasions/:_occasionId/cards/', {
template: 'cards',
data: function(){
//var currentoccasion = this.params._occasionId;
//console.log(currentoccasion);
},subscriptions : function(){
Meteor.subscribe('cards');
Meteor.subscribe('tables');
}
});
我需要将_occasionId参数放入一个模板中,该模板具有导航功能,可以在所有这些页面中输入。我的目标是从路由1开始,您可以转到路由器2.但我无法弄清楚如何在模板中添加正确的URL。
我的模板是:
<template name="occasionnav">
<nav>
<div class="nav-wrapper">
<ul class="right hide-on-med-and-down">
<li><a href="/occasions/:_occasionId/cards/">cards</a></li>
<li><a href="/occasions/:_occasionnId/tables/">tables</a></li>
</ul>
</div>
</nav>
</template>
在&#39; occasionnav&#39;模板由&#34;:_ occasionId&#34;我需要将其与当前正在查看的页面放在同一个参数中。
如果有人对最佳方法有任何见解或建议我会非常感激。
答案 0 :(得分:2)
如果您想在Meteor应用程序中渲染内部路线,我建议使用{{pathFor}}
。
您只需设置正确的上下文并为路线命名,例如:
<template name="occasionnav">
<nav>
<div class="nav-wrapper">
<ul class="right hide-on-med-and-down">
{{#with occasion}}
<li><a href="{{pathFor route='occasions.cards'}}">cards</a></li>
<li><a href="{{pathFor route='occasions.tables'}}">tables</a></li>
{{/with}}
</ul>
</div>
</nav>
</template>
Router.route('/occasions/:_id/cards/', {
template: 'cards',
name: 'occasions.cards',
data: function() {
return Cards.findOne({_id: this.params._id});
},
subscriptions: function() {
return Meteor.subscribe('cards', this.params._id);
}
});
Router.route('/occasions/:_id/tables/', {
template: 'tables',
name: 'occasions.tables',
data: function() {
return Tables.findOne({_id: this.params._id});
},
subscriptions: function() {
return Meteor.subscribe('tables', this.params._id);
}
});
但是,您也可以通过Router.current().params
在模板中获取路由器参数。
答案 1 :(得分:-1)
您可以将_occasionId作为模板助手传递,并以玉石形式呈现:
<li><a href="/occasions/{{_occasionId}}/cards/">cards</a></li>
答案 2 :(得分:-1)
你应该尝试:
Router.route('/occasions/:_occasionId/cards/', function() {
this.layout("LayoutName");
this.render("cards", {
data: {
currentoccasion = this.params._occasionId;
}
});
});
使用Router.map时,语法不完全相同:
Router.map(function() {
this.route('<template name>', {
path: 'path/:_currentoccasion',
data: function () {
return {
currentoccasion: this.params._currentoccasion
}
}
});
您可以像模板中那样访问:
Like an helper
{{ currentoccasion }}
Or on the onRendered and onCreated functions
Template.<template name>.onRendered({
this.data.currentoccasion