【问题标题】:Iron Router hook on a route before actually changing the templateIron Router 在实际更改模板之前挂钩路由
【发布时间】:2014-10-21 07:48:20
【问题描述】:

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

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

我的问题是我想在重定向用户之前显示弹出窗口。 所以我尝试了 onBeforeAction 钩子之类的东西,但是所有与 Iron 路由器一起工作的东西似乎只有在浏览器的 URL 更改并且当前模板被卸载后才挂钩。

你知道如何获得这种行为吗?

干杯

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:

    这是一个常见的用例,我认为目前在 Iron 路由器框架中无法直接实现(尽管我很高兴得到纠正!)。正如您所发现的,onBeforeAction 在页面渲染之前运行但在新路由运行之后运行,因此旧页面已经消失了。

    实际上,您希望将新路线的运行排队,直到某个操作完成。我遇到此要求的用例是page transitions,对此,最好的解决方案似乎与您的建议完全相反:即将逻辑添加到附加到链接的事件中,并且仅重定向一旦该逻辑已令人满意地完成(即在您的情况下已关闭弹出窗口),就到新路线。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        基于这个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.
        
        });
        

        【讨论】:

          猜你喜欢
          • 2015-03-14
          • 1970-01-01
          • 2016-02-26
          • 1970-01-01
          • 2015-02-12
          • 2015-04-06
          • 2017-02-21
          • 2015-08-26
          • 2013-09-10
          相关资源
          最近更新 更多