有没有从模板访问铁路由器参数流星的方式(Is there a way to access Iron

2019-10-24 15:52发布

我有中有一个参数的路线,我需要从许多不同的模板访问。 下面是路由的一个例子,有几个途径是只是它改变了_occasionnId参数之后很相似:

例如:

路线1:/次/:_ occasionId /卡/

路由器2:/次/:_ occasionId /表/

这是我为每个路由完整的代码,真正唯一改变的是路由路径和模板。

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>

在由“occasionnav”模板“:_occasionId”我需要的是相同的参数作为当前正在浏览的页面刺入这里。

如果任何人有最好的方式任何见解或意见,以接近这一点,我真的很感激它。

Answer 1:

我建议使用{{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



Answer 2:

您可以通过_occasionId为模板助手,呈现在玉,如:

<li><a href="/occasions/{{_occasionId}}/cards/">cards</a></li>


Answer 3:

你应该试试 :

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


文章来源: Is there a way to access Iron Router parameter from template in Meteor