我试图在用户点击付费对象后立即向用户显示付款弹出窗口。 但在他付钱后,他应该直接输入他点击的内容。
因此,我认为这是一个很好的解决方案,可以通过路由器解决这个问题,因为我希望页面上重定向到此内容的每个链接都显示此弹出窗口。
我的问题是我想在重定向用户之前显示弹出窗口。 所以我尝试了onBeforeAction钩子和东西但是所有使用铁路由器的东西似乎只是在浏览器的URL发生变化并且当前模板被卸载后才挂钩。
你知道如何做到这种行为吗?
干杯
答案 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