Почему это бесконечный цикл? [Iron Router + Fast Рендер + Blaze]Iron-router + Fast-render, почему это бесконечный цикл?
Router.route("/:cycle_uri", {
name: "cycle"
,template: "home"
,onBeforeAction: function() {
console.log("is there a loop here?") // this is what confirms that it's a continuous loop
var cycle = Cycles.findOne({
"uri": this.params.cycle_uri
});
if (typeof cycle === "undefined") {
this.render("notFound"); return;
} else {
ActiveCycle.set(cycle); // if I remove this, there is no continuous loop anymore... but if I remove it I don't see how to have this info in the client
this.render("home");
}
}
,waitOn: function() {
Meteor.subscribe('featuredListsPub', {
'program_id': this.params.cycle_uri
});
}
,fastRender: true
});
Я пытался обновить переменную ActiveCycle, так что я могу читать его в веб-интерфейсе, но это на самом деле не работает ... Я, конечно, делать что-то не так, но хотелось бы чтобы понять, почему обновление реактивного var создает цикл.
Я также попытался
if (ActiveCycle.get() !== cycle) {
ActiveCycle.set(cycle);
}
, но он также входит в цикл ... который я не понимаю, почему
вам нужно вернуть подписку с функции waitOn – Guns
Я не думаю, что вы должны что-то делать изнутри функции 'onBeforeAction'. который принадлежит самому «действию». –
Вы можете вызвать рендер в onBeforeAction, не беспокойтесь, это довольно распространенная практика проверки статуса входа –