实际更改模板之前,路由器上的铁路由器挂钩

时间:2014-08-27 16:08:11

标签: javascript meteor iron-router

我试图在用户点击付费对象后立即向用户显示付款弹出窗口。 但在他付钱后,他应该直接输入他点击的内容。

因此,我认为这是一个很好的解决方案,可以通过路由器解决这个问题,因为我希望页面上重定向到此内容的每个链接都显示此弹出窗口。

我的问题是我想在重定向用户之前显示弹出窗口。 所以我尝试了onBeforeAction钩子和东西但是所有使用铁路由器的东西似乎只是在浏览器的URL发生变化并且当前模板被卸载后才挂钩。

你知道如何做到这种行为吗?

干杯

3 个答案:

答案 0 :(得分:2)

基于此answer,以下是使用Router.onStop()挂钩路由器的方法:

// onStop hook is executed whenever we LEAVE a route
Router.onStop(function(){
  //check if the current route is the page from where you need to show your 
  //popup and show it based on, for instance, a session variable containing 
  //the previously clicked content id.

});

答案 1 :(得分:0)

这是一个常见的用例,我认为目前在铁路由器框架内无法直接实现(尽管我很乐意予以纠正!)。正如您所发现的那样,onBeforeAction在页面呈现之前运行,但在新路由运行之后,旧页面已经消失。

实际上,您正在寻找对新路线的运行进行排队,直到某个操作完成为止。我遇到此要求的用例是page transitions,最佳解决方案似乎与您的建议完全相反:即将逻辑添加到链接附加的事件,只有在逻辑已圆满完成后才重定向到新路由(即弹出窗口已关闭)。

我同意在路由器中做一些事情是一种明智的方法来解决这个问题,但我不确定它在铁路由器中是否可行。请注意,这只有already been raised

答案 2 :(得分:0)

这个研讨会会吗? '卸载 - 当您离开新路线的路线时,只运行一次。' 从 https://github.com/EventedMind/iron-router/blob/devel/DOCS.md#unload-hook