我试图用铁支持哈希标签:路由器。 现在我有帖子的数据,每个帖子都有一个标签数组,这些标签呈现为链接列表。
<ul class="list-unstyled list-inline">
{{#each tags}}
<li>
<a class="tag" href="{{pathFor 'postsTag'}}">{{this}}</a>
</li>
{{/each}}
</ul>
但我无法理解如何在点击时获取标记的值并根据此特定哈希标记呈现帖子。
我可以通过点击
获取标签的值Template.post.events({
"click .tag": function(e) {
Session.set('tag',this.toString());
return false;
}
});
但我不能在它上面制作动态路由器。我尝试了类似的东西
Router.route('/posts/:tag',{
name: 'postsTag',
data: function() {
return Posts.find({tags:{$in: value_of_tag }});
}
});
答案 0 :(得分:2)
如果tags
是一个简单的字符串数组,您可以使用以下语法查询此字段以匹配特定值:
Posts.find({
tags: "value"
});
当您要在数组中定义的一组值中搜索具有特定字段值的文档时,使用 $in
。
Posts.find({
tags: {
$in: ["value1","value2","value3"]
}
});
此查询将返回包含至少一个指定值的tags数组的帖子,如果您想使用多个标记值过滤帖子,这将非常有用。
http://docs.mongodb.org/manual/reference/operator/query/in/#op._S_in
如果要定义仅显示具有特定标记值的帖子的路线,请使用此控制器:
Router.route("/posts/:tag", {
name: "postList",
waitOn:function(){
return Meteor.subscribe("postsByTag",this.params.tag);
},
data: function() {
return Posts.find({
tags:this.params.tag
});
}
});