如何在路由中调用方法?

How to call method in route?

我有两种搜索方式

POST /search
GET  /search?q=q

对于POST,我可以直接在客户端使用Meteor.call

'submit form': function() {
    Meteor.call('search', data......
}

对于 GET,如何在路由器中调用 Meteor.call

Router.route('/search', {
  template: 'ItemList',
  data: function() {
  return Meteor.call('search', this.params.query); // ???
}

关于search方法,它不仅会搜索数据库,还会搜索文件系统。

我不知道如何进行第二次 GET 搜索。

您可以执行 Router.current().params.q 从 url 获取 q 变量。

在上述方法中,您不需要 data: function()。

我建议不要在您的路由器中进行呼叫。路由器负责引导操作流,如果它还管理所有数据和外部资源跟踪,它会使事情变得更加复杂。

在模板级别,您可以轻松检测路由器参数 (Router.current()) 或让它们直接从数据部分的路由器传递。

然后在呈现时您可以让模板点击您的调用函数。然后让它对一些依赖跟踪做出反应