【问题标题】:How to make hash-tags with meteorjs and iron:router?如何使用流星 js 和 Iron:router 制作主题标签?
【发布时间】:2015-07-02 01:31:53
【问题描述】:

我正在尝试使用 Iron:router 来支持标签。 现在我有了帖子的数据,每个帖子都有一个标签数组,呈现为链接列表。

<ul class="list-unstyled list-inline">
  {{#each tags}}
    <li>
      <a class="tag" href="{{pathFor 'postsTag'}}">{{this}}</a>
    </li>
  {{/each}}
</ul>

但我不明白如何在点击时获取标签的值并根据这个特定的哈希标签呈现帖子。

点击可以通过Session获取标签的值

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 }});
  }
});

【问题讨论】:

    标签: javascript mongodb meteor iron-router hashtag


    【解决方案1】:

    如果tags 是一个简单的字符串数组,您可以使用以下语法查询此字段以匹配特定值:

    Posts.find({
      tags: "value"
    });
    

    $in 用于在数组中定义的一组值中搜索具有特定字段值的文档。

    Posts.find({
      tags: {
        $in: ["value1","value2","value3"]
      }
    });
    

    此查询将返回包含至少一个指定值的标签数组的帖子,如果您想使用多个标签值过滤帖子,这将很有用。

    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
        });
      }
    });
    

    【讨论】:

    • 好的,但是怎么做路由器呢?
    • 您需要定义一个RouteController,该RouteController返回标签值对应于路由URL标签值参数的帖子。
    猜你喜欢
    • 2013-02-01
    • 2015-06-18
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多