我们正在使用 Meteor.autorun 来查找“过滤器”会话变量中的更改,对服务器进行两次异步调用以获取过滤后的数据,并使用结果更新两个“列表”会话变量。在另一个 .autorun 函数中,脚本等待列表会话变量中的更改,然后打开适用的模板。
所以,
Meteor.autorun(function(){
set_search_session(Session.get('filters'));
render_templates(
Session.get('places'),
Session.get('awards')
);
});
var set_search_session = function(filters) {
Meteor.call('search_places', filters.places, function(error, data) {
Session.set('places', data);
};
Meteor.call('search_awards', filters.awards, function(error, data) {
Session.set('awards', data);
};
};
var render_templates = function(places, awards) {
var filters = Session.get('filters');
if (!awards && _.isUndefined(filters['neighborhood'])) {
Session.set('template', 'place_detail');
};
};
问题是 render_templates 函数运行了两次,因为它显然仍然依赖于 Session.get('filters')。因此,在任何自动运行功能中,您似乎都无法使用与您正在观察更改的功能分开的 Session.get() 功能。
有没有解决的办法?
非常感谢您的帮助。