如何获得'关键字'在使用Iron Router的domain.com/keyword中

时间:2015-10-19 18:26:30

标签: javascript meteor iron-router

我正在一个网站上工作,我必须在数据库中搜索在根域上/后面的字符串。我在文档中找不到任何相关内容。 我试图让它与Iron Router一起使用,但任何其他建议都可以解决。

感谢您的帮助!

编辑:基本上我只想将域名之后的任何内容传递给变量。

2 个答案:

答案 0 :(得分:1)

这是我一直在做的事情,也许它会带领你走上正确的道路

路由将网址params发送到ownedGroupList模板

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

模板ownedGroupList可以使用paramsthis.dataonCreated模板事件处理程序中的onRendered访问onDestroyed对象

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 :(得分:1)

这是一个应该做的诀窍的简单路线

Input.GetMouse

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

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中提供的任何文档和字段。