铁路由器数据上下文传递给模板

时间:2015-07-07 19:07:08

标签: templates meteor iron-router

使用:

Meteor 1.1.0.2

铁:路由器1.0.9

我正在尝试将数据从路由器传递到模板。所有文档似乎都指向传递为render函数的第二个参数。对于我的生活,我无法让它工作。如果它是布局函数的第二个参数,它确实有效。

阅读后,似乎首选的方法是通过路由器传递数据而不是帮助。另外,我已经全局配置了要使用的模板,因此如果我在Router.config中使用布局,则不会声明layout()。

请纠正任何误解。

所以,这是我的模板HTML:

<div class="col-sm-12 col-md-12">
  <P>pageTitle: {{pagetitle}}</P>
</div>

现在我只想要一些静态而不是数据库中find()的结果集。

这是我的router.js中的一个片段。这不符合想法:

Router.route('/tour', function(){
  console.log("This is a tour page"); // this works
  this.layout('Marketing'); // different than what config calls
  this.render('tour', {
    data: function(){
      return {pagetitle:'Tour12'}; // template does not see this
   }
  });
  },{
    name: 'marketing.tour'
});

如果我将其重写为下面的内容,则变量会按预期填充:

Router.route('/tour', function(){
  console.log("This is a tour page");
  this.layout('Marketing', {
    data: function(){
      return {pagetitle:'Tour12'};
    }
 });
 this.render('tour');
 },{
  name: 'marketing.tour'
 });

我也尝试将所有params作为对象传递无效(这似乎是传递属性的好方法):

Router.route('/tour',{
  name: 'marketing.tour',
  layout: 'Marketing',
  data: {pagetitle:'Tour12'},
  render: 'tour'
});

那么,我做了一些不正确的假设吗?我应该遵循不同/更好的设计模式吗?每次我想传递数据上下文时,我只需要调用this.layout()吗?好像Router.map()已被折旧(因为很多例子表明这是向模板注入数据的一种方法?进一步的想法?

谢谢。

0 个答案:

没有答案