我有一个名为Templatemovies,它具有一个方法,它可以从集合中返回对象列表。 查询以生成该对象列表是使用来自其他模板方法的数据动态创建的。

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

以下是使用的两种方法:

  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"]]});
  };
.

在html侧面,它是一个简单的{{#each movies}}{{> movie}}{{/each}},以显示来自movies方法的结果。

问题是,当生成的Session.get("filter")发生变化时,依赖于生成的HTML组件不会使用新的查询结果进行更新。

如何实现该行为?

有帮助吗?

解决方案

最简单的方法是制作两个帮助程序使用的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"]]});
};
.

这将在您期望的情况下做出反应。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top