2015-10-19 128 views
0

我在一个网站,我在DB搜索字符串/而来后,在根域工作。我在文档中找不到任何关于它的信息。 我想使它与Iron Router一起工作,但任何其他建议都可以解决。如何获得在domain.com/keyword的“关键字”与铁路由器

感谢您的帮助!

编辑:基本上我只是想将domain.com/后的任何内容传递给变量。

+3

'route(/:keyword',handler)'有什么问题? –

+0

感谢您的回答!我如何将'关键字'传递给一个全局变量,这样我就可以在我的项目中使用它了? – Mark

+0

编辑并感谢。 – Mark

回答

1

这里的东西我一直在做,所以也许它会导致你在正确的道路

路线发送URL paramsownedGroupList模板

Router.route('/users/:_id/groups', { 
    name: 'owned.group.list', 
    template: 'ownedGroupList', 
    data: function() { 
     return {params: this.params}; 
    } 
}); 

模板ownedGroupList可以使用this.data访问params对象onCreatedonRenderedonDestroyed模板事件处理程序

Template.ownedGroupList.onCreated(function(){ 
    this.subscribe("owned-groups", this.data.params._id); 
}); 

模板ownedGroupList可以在辅助方法访问params通过this可变

Template.ownedGroupList.helpers({ 
    groups: function() { 
     return Groups.find({owner: this.params._id }); 
    } 
}); 

模板ownedGroupList可以在事件处理程序访问params通过template.data可变

Template.ownedGroupList.events({ 
    'click .a-button': function(event, template) { 
     var group = Groups.findOne({owner: template.data.params._id }); 
     // do something with group 
    } 
}); 
1

这里有一个简单的路由应该做的伎俩

Router.route('/:keyword', { 
    name: 'keyword', 
    template: 'keywordTemplate', 
    data: function() { 
     return this.params.keyword; 
    } 
}); 

这会将关键字作为数据上下文传递给您的模板,然后您可以随心所欲地执行任何操作。或者,您可以直接在路由器中执行搜索(特别是如果您将关键字传递给订阅以便搜索在服务器上运行)。例如:

Router.route('/:keyword', { 
    name: 'keyword', 
    template: 'keywordTemplate', 
    waitOn: function(){ 
     return Meteor.subscribe('keywordSearch',keyword); 
    }, 
    data: function() { 
     return MyCollection.find(); 
    } 
}); 

这第二个模式将您的关键字发送到一个名为keywordSearch订阅,将在服务器上执行。当订阅准备就绪时,路由的data函数将运行,并且传递到您的keywordTemplate的数据上下文将是MyCollection中提供的任何文档和字段。

相关问题