流星将参数传递给助手以基于该参数填充页面

Meteor. Passing an argument to a helper to populate a page based on the argument

本文关键字:参数 于该 填充 参数传递 流星      更新时间:2023-09-26

我正试图根据通过地址栏发送的参数来填充流星模板。

我正在使用Iron路由器,当我查看它的文档时,我发现了这个例子

Router.route('/post/:_id', function () {
  this.render('Post', {
    data: function () {
      return Posts.findOne({_id: this.params._id});
    }
  });
});

我尝试了类似的方法,但我很难找到如何在模板中实际使用该数据属性。以前我使用过一个模板助手来查找数据库,只要它总是相同的查找命令,它就可以完美地工作。现在我想根据我通过地址栏输入的内容来定制这个发现,我正在努力做到这一点。

使用上面的Iron路由器示例,我尝试了类似于的东西

Router.route('fruit/:_colour', function () {
  this.render('fruitTemplate', {
    data: function () {
      return FruidDb.find({colour: this.params._colour});
    }
  });
});

这就是我陷入困境的地方。通常,为了填充我的模板,我会使用下面这样的助手

Template.fruitTemplate.helpers({
  fruitByColour: function() {
      return FruidDb.find({colour: "green");
  }
});

然后在每种水果前按颜色

但是现在我正在"动态地"获取数据,我不知道如何获取从Route返回给助手的数据。

也许我这样做完全错了。如果有更好的方法可以将参数传递给助手并从那里进行db.find,那可能是最好的,但我发现很难找到最好的方法,我非常感谢

的任何帮助

由于我在这个问题上找到了一些代码,我找到了答案Meteor Iron路由器:在路由之间传递数据

基本上,我不需要定义一个单独的助手,我可以像这样传递与助手中相同的数据。

Router.route('fruit/:_colour', function () {
  this.render('fruitTemplate', {
    data: {
      fruitByColour: function () {
        return FruitDb.find({colour: this.params._colour});
      }
    }
  });
});
相关文章: