Meteor 路由器和 url 参数
Meteor router and url paramaters
我在尝试将 URL 参数与 iron:router 一起使用时遇到了一些问题。
在我的应用程序的主页上,我显示了一个帖子线程。但我想允许人们通过在 url 中指定其 ID 来 select 单个线程。就像那样,当有人点击 link 到特定线程时,如 myapp/the_asked_id,他只会看到与该线程相关的数据。否则,他会看到所有线程。
我认为我可以从 url 中获取数据,例如在 PHP 中,然后检查此参数的值/是否存在:如果它存在/具有正确的值,我显示线程,否则我显示所有。
这是我到目前为止尝试过的方法:
HTML link :
<a href="#" class="dropdown-toggle green-link" data-toggle="dropdown" title="Notifications" data-target="{{link}}">the link</a>
使用 {{link}} 作为我的 collection 的 _id 来标识要显示的所需线程/文档。
Js link 事件:
'click .talkLink' : function(event, template){
if($(event.target).hasClass('talkLink'))
{
console.log(event.target.dataset.target);
console.log(event.currentTarget);
}
else {
console.log(event.currentTarget);
}
Router.go('/', {_id: event.target.dataset.target});
},
路由器:
this.route('home', {
path: '/:_id?',
data: {
threadId: (this.params._id || "")
}
});
但我无法让它工作,因为它目前总是显示未找到的模板...
有人可以向我解释哪里出了问题以及我应该如何处理吗?
谢谢,
大卫
几点建议:
this.route('home', {
path: '/:_id',
data: function() {
// assuming you have a collection called "Threads"
return Threads.findOne(this.params._id);
}
});
- 您需要一个名为 'home' 的模板。它的数据上下文将是
data
回调 的 return
- 您不需要在路径中放置
?
data
是一个回调,你可以在其中访问this.params
找到正确的文档。
我在尝试将 URL 参数与 iron:router 一起使用时遇到了一些问题。
在我的应用程序的主页上,我显示了一个帖子线程。但我想允许人们通过在 url 中指定其 ID 来 select 单个线程。就像那样,当有人点击 link 到特定线程时,如 myapp/the_asked_id,他只会看到与该线程相关的数据。否则,他会看到所有线程。
我认为我可以从 url 中获取数据,例如在 PHP 中,然后检查此参数的值/是否存在:如果它存在/具有正确的值,我显示线程,否则我显示所有。
这是我到目前为止尝试过的方法:
HTML link :
<a href="#" class="dropdown-toggle green-link" data-toggle="dropdown" title="Notifications" data-target="{{link}}">the link</a>
使用 {{link}} 作为我的 collection 的 _id 来标识要显示的所需线程/文档。
Js link 事件:
'click .talkLink' : function(event, template){
if($(event.target).hasClass('talkLink'))
{
console.log(event.target.dataset.target);
console.log(event.currentTarget);
}
else {
console.log(event.currentTarget);
}
Router.go('/', {_id: event.target.dataset.target});
},
路由器:
this.route('home', {
path: '/:_id?',
data: {
threadId: (this.params._id || "")
}
});
但我无法让它工作,因为它目前总是显示未找到的模板...
有人可以向我解释哪里出了问题以及我应该如何处理吗?
谢谢,
大卫
几点建议:
this.route('home', {
path: '/:_id',
data: function() {
// assuming you have a collection called "Threads"
return Threads.findOne(this.params._id);
}
});
- 您需要一个名为 'home' 的模板。它的数据上下文将是
data
回调 的 return
- 您不需要在路径中放置
?
data
是一个回调,你可以在其中访问this.params
找到正确的文档。