如何使用 Meteorjs 使用 URL 参数

Posted

技术标签:

【中文标题】如何使用 Meteorjs 使用 URL 参数【英文标题】:How to use URL parameters using Meteorjs 【发布时间】:2014-04-02 22:48:22 【问题描述】:

如何在流星中使用 URL 参数。

网址可能如下所示:http://my-meteor.example.com:3000?task_name=abcd1234

我想在流星应用程序的 mongodb 查询中使用“task_name”(abcd1234)。

例如。

Template.task_app.tasks = function () 
  return Tasks.find(task_name: task_name); 
;

谢谢。

【问题讨论】:

你是不是碰巧在用iron-router? 【参考方案1】:

您可能想要使用路由器来处理路径并为不同的路径渲染某些模板。 Iron-router 包是最好的。如果您还没有使用它,我强烈推荐它。

使用 Iron-router 后,获取查询字符串和 url 参数变得非常简单。您可以在此处查看文档部分:https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#route-parameters

对于您提供的路线示例,如下所示:

Router.map(function () 
  this.route('home', 
    path: '/',
    template: 'task_app'
    data: function () 
      // the data function is an example where this.params is available

      // we can access params using this.params
      // see the below paths that would match this route
      var params = this.params;

      // we can access query string params using this.params.query
      var queryStringParams = this.params.query;

      // query params are added to the 'query' object on this.params.
      // given a browser path of: '/?task_name=abcd1234
      // this.params.query.task_name => 'abcd1234'
      return Tasks.findOne(task_name: this.params.query.task_name);

    
  );
);

这将创建一个路由,该路由将使用与任务名称匹配的第一个任务的数据上下文呈现“task_app”模板。

您还可以使用 Router.current() 从模板助手或其他函数访问 url 参数和其他路由信息以获取当前路由。因此,例如在帮助程序中,您可以使用Router.current().params.query.task_name 来获取当前任务名称。 Router.current() 是一个响应式元素,因此如果在响应式计算中使用它,那么当对路由进行任何更改时,计算将重新运行。

【讨论】:

现在如何在您的示例中加载模板的事件中访问该参数。在您的示例中,如何在 Template.home.events() 中访问 this.params.taskname 这个答案只告诉我们如何访问 router.js 文件中的查询参数。它没有解释如何在模板函数中访问查询参数,如原始示例所述。 如果你使用 Iron Router,你可以在 Meteor 的任何地方使用 Router.current().params。它是一个反应变量,因此请注意,如果您在反应计算中使用它,该函数将在参数更改时重新运行。

以上是关于如何使用 Meteorjs 使用 URL 参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 cordova-plugin-file-transfer 从 URL 下载带有参数的图像到设备

在MeteorJS中的表单上,在onSubmit之后路由到一个新的URL。

使用 AngularJS 和 MeteorJS

MeteorJS:在弹出窗口中不会触发模板事件

当 web 端口 80 已经在使用时,如何监听 heroku 上的任何端口?

如何使用锚点使用 URL 参数