流星。将参数传递给帮助程序以根据参数填充页面

时间:2015-03-01 09:24:40

标签: javascript meteor iron-router

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

我正在使用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");
  }
});

然后只是通过每个fruitByColour

但是现在我已经动态地"得到这些数据我不知道如何获取从Route返回给帮助者的数据。

也许我这样做完全错了。如果有一个更好的方法来将param传递给帮助程序并从那里执行db.find可能是最好的但是我发现很难看到最好的方法来执行此操作并且非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我找到了答案,感谢我在这个问题上找到的一些代码 Meteor Iron Router : Passing data between routes

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

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