Meteor.autorunを使用して、「filters」セッション変数の変更を検索し、フィルター処理されたデータに対してサーバーに対して2つの非同期呼び出しを行い、2つの「list」セッション変数を結果で更新します。別の.autorun関数では、スクリプトはリストSession変数の変更を待機してから、該当するテンプレートをオンにします。
それで、
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関数が2回実行されることです。これは、明らかにまだSession.get('filters')に依存しているためです。したがって、どの自動実行関数でも、変更を監視している関数とは別のSession.get()関数を使用できないように見えます。
これを回避する方法はありますか?
どうもありがとうございました。