过滤集合

Filter a collection

我有一个显示所有 Stories 的页面。我添加了一个过滤器表单,您可以在其中 select a priority 然后页面应该只显示具有该优先级的故事。这是表格:

  <form name="filter_form">
    <select name="prio" class="form-control">
      <option value=1>High</option>
      <option value=2>Medium</option>
      <option value=3>Low</option>
    </select>
    <button type="submit" class="btn btn-default">Filter</button>
  </form>

这是显示所有故事的代码:

  <div class="stories">
    {{#each stories}}
      {{> storyItem}}
    {{/each}}
  </div>

这是表单处理程序:

Template.storiesList.events({
  'submit form': function(e) {
    e.preventDefault();

    var prio = $(e.target).find('[name=prio]').val();
    var stories = Stories.find({prio: prio});
    return stories;
  }
});

我想只进行查找查询和 return 结果并不容易,因为目前什么也没有发生。我在这里做错了什么?

您需要将 stories 定义为响应式助手。然后你可以使用一个 Session 变量来 link 事件到列表中:

Template.storiesList.helpers({
  'stories': function() {
    return Stories.find({prio: Session.get('prio')});
  }
});

Template.storiesList.events({
  'submit form': function(e) {
    e.preventDefault();

    var prio = parseInt($(e.target).find('[name=prio]').val());
    Session.set('prio'), prio);
  }
});