我在尝试将 Meteor 中的 URL 参数与 Iron:router 一起使用时遇到一些问题。
在我的应用程序的主页上,我会显示帖子线程。但我希望允许人们通过在 url 中指定其 ID 来选择单个线程。这样,当有人单击指向特定线程(例如 myapp/the_asked_id)的链接时,他只能看到与该线程相关的数据。否则,他会看到所有线程。
我认为这将是我从 url 获取数据的地方,就像在 PHP 中一样,然后检查此参数的值/是否存在:如果它存在/具有正确的值,则显示线程,否则显示所有这些。
这是我迄今为止尝试过的:
HTML 链接:
<a href="#" class="dropdown-toggle green-link" data-toggle="dropdown" title="Notifications" data-target="{{link}}">the link</a>
将 {{link}} 作为我集合中的 _id,以标识要显示的所需线程/文档。
Js链接事件:
'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
回调的返回 - 您不需要在路径中放置
?
data
是一个回调,您可以在其中访问this.params
以查找正确的文档。
关于javascript - Meteor 路由器和 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891810/