Iron Router中的动态查询

时间:2015-05-10 08:17:01

标签: meteor iron-router

由于铁路由器文档几乎无用,创建者过去常常在问题解决之前关闭(现在显然放弃了,只是让他们坐在那里),这是一个我无法找到解决方案的问题对

我需要设置一个看起来像这样的动态查询:

/person?name=Johnny

在完美的世界中,这将以这种方式实现:

<a href="{{pathFor 'person' query='name=' + this.name}}">

除非这不是一个完美的世界(毕竟我们在谈论铁路由器),所以我该如何实际做到这一点?

3 个答案:

答案 0 :(得分:1)

首先我要先做好这件事:

meteor remove passive:aggression

这应该有所帮助。

其次,您或多或少要做的就是将用户的ID传递给iron:router,然后让它查询具有匹配ID的用户的数据库。一旦你有了帐篷,他就会在铁中使用对象:路由器,你将能够将你想要的任何值打印到网址中。

Meteor Chef的这个教程非常适合做与你正在寻找的事情相似的事情Slugged Routes

答案 1 :(得分:0)

这是一个简单的铁路:路由器动态路由:

Router.route('/person/:name',{
  name: 'person',
  layoutTemplate: 'layout',
  data: function(){ // called once the subscription is ready
    return People.findOne({ name: this.params.name });
  },
  waitOn: function(){
    return Meteor.subscribe('getPerson',this.params.name); // assumes you need to ask the server for the document since you probably won't publish all people to every client
  }
});

该路线将以/person/name而非参数列表样式/person?name=

的形式提供

答案 2 :(得分:0)

您可以使用以下内容将查询参数传递到路径:

{{pathFor 'person' query='name=Johnny'}}

或者传递一个像这样的辅助函数的值

Template.myTemplate.helpers({
    helperVal: function(){
        return "name="+this.name;
    }
});

//in template
{{pathFor 'person' query=helperVal}}

然后在路线中自行检索......

this.params.query.name