模板中的反应收集查询

时间:2012-09-30 16:05:01

标签: meteor

我有一个名为Template的{​​{1}},它有一个返回集合中对象列表的方法。 使用来自另一个模板方法的数据动态创建生成该对象列表的查询。

每当过滤器数据发生变化时,我都想重新渲染模板,或者只重新渲染与特定模板方法相关的组件。

以下是使用的两种方法:

movies

在HTML方面,显示 Template.movies.filter = function () { if (Session.equals("filter", undefined)) { return {}; } return Session.get("filter"); }; Template.movies.movies = function () { return Movies.find(Template.movies.filter(), {sort: [["Poster", "desc"]]}); }; 方法的结果非常简单{{#each movies}}{{> movie}}{{/each}}

问题movies更改时Session.get("filter")更改,依赖Template.movies.filter()数据的HTML组件将不会更新查询结果。

我将如何实现这种行为?

1 个答案:

答案 0 :(得分:2)

最简单的方法是制作一个两个助手都使用的javascript函数:

var getFilter = function() {
  if (Session.equals("filter", undefined)) {                                       
    return {};
  }
  return Session.get("filter")
}

Template.movies.filter = function() { return getFilter(); }
Template.movies.movies = function () {                                             
  return Movies.find(getFilter(), {sort: [["Poster", "desc"]]});
};

这会按照您的预期做出反应。