我有一个名为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组件将不会更新查询结果。
我将如何实现这种行为?
答案 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"]]});
};
这会按照您的预期做出反应。