流星铁路由器:自定义id路由
Meteor Iron Router : custom id route
在使用iron router和从集合中传入自定义id时遇到了点麻烦。
一些上下文:我有一个"组"集合,其中它们都有自己的特殊id,而不是自动生成的默认_id。我想创建一条像
这样的路径" localhost:3000/groups/:groupid "
,所以每个组将有自己的渲染模板与组的信息。
HTML:
<template name="Group">
<h1>Group: {{groupName}}</h1>
</template>
CLIENTSIDE:从会话中抓取组…我测试了这个,它可以工作,所以它不是从会话中抓取它的问题,而是与路由器
var groupid = Session.get('groupID');
Router.go('/groups/:_id',{_id: groupid})
路由器:
Router.route('/groups/:_id', function () {
this.render('Group', {
data: function () {
return GroupsList.findOne({_id: this.params._id});
}
});
});
这将呈现一个以groupid作为参数而不是实际编号的路由
更新:客户
Router.go('/groups/'+ groupid);
路由器Router.route('/groups/:groupid', function () {
this.render('Group', {
data: function () {
console.log(this.params.groupid)
console.log(GroupsList.findOne({groupID: this.params.groupid}))
return GroupsList.findOne({groupID: this.params.groupid});
}
});
});
这似乎使路由工作,但它不会在模板中呈现组名
From the Iron Router Guide:
Now that we're using named routes in Router.go you can also pass a
parameters object, query and hash fragment options.
Router.go('post.show', {_id: 1}, {query: 'q=s', hash: 'hashFrag'});
然而,当你调用Router。注意,你传递的不是路由名,而是url。
试试这个:
Router.go('/groups/' + groupid);
Router.route('/groups/:_id', function () {
this.render('Group', {
data: function () {
return GroupsList.findOne({groupid: this.params._id});
}
});
});
在回答的旁注中,以防其他人有这个问题,我实际上发现"this.params"的数据类型存在问题。_id",它似乎是作为一个数据类型,不是一个字符串或数字,因此不能成功地在findOne方法中使用。最后我只需要进行parseInt,这就是最后的解决方案:
Router.go('/groups/'+ groupid);
Router.route('/groups/:groupid', function () {
this.render('Group', {
data: function () {
var id = parseInt(this.params.groupid)
return GroupsList.findOne({groupID: id});
}
});
});
相关文章:
- 当我将 GET /any 发送到自定义路由“GET /:id”时,我得到 req.params.id = 'favico
- 无法读取属性id成员路由
- Symfony2-从路由到控制器获取ID
- 无法获取用户 ID 路由参数以在反应路由器中继上工作
- 对 ID 的角度单击应路由到不同的页面
- 基于 id 访问 url 时存在角度路由问题
- 如何在 ember.js 中访问路由文件中的 :id 参数
- Angular JS TypeError:无法读取路由上未定义的属性“id”
- 在 ember-cli 中使用 ID 的路由
- 将当前路由活动 ID 传递给组件
- 帆.js如何修改路由以插入逗号分隔的 ID 列表
- Ember-将模型id从路由中取出并发布到服务器
- Javascript(Jquery)调用MVC3 Controller/Action/ID的URL路由问题,返回404,
- Sails.js路由,url中有变量.ex/游戏/(此处ID)
- 如何设置具有可选ID的路由以进行查找,以及回退默认模型
- Javascript路由和创建Urls/post/id
- 带有会话id的流星路由
- AngularJS:路由到/page/:id并显示id'
- 如何让Angular路由使用title而不是id
- 流星铁路由器:自定义id路由