题
我有一个名为Template
的movies
,它具有一个方法,它可以从集合中返回对象列表。
查询以生成该对象列表是使用来自其他模板方法的数据动态创建的。
我想重新渲染模板,或者只是与该特定模板方法相关联的组件,每当过滤器数据发生变化时。
以下是使用的两种方法:
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"]]});
};
.
这将在您期望的情况下做出反应。
不隶属于 StackOverflow