angular-rootscope在locationChangeStart上播放不起作用

时间:2016-01-19 09:14:27

标签: angularjs

我在$ locationChangeStart事件中从我的run函数发送$ rootScope。$ broadcast。在我的一个控制器中,我设置了一个监听器,但它没有得到事件。事件是否在页面生命周期中过早播出?解决方案是什么?

感谢。

1 个答案:

答案 0 :(得分:1)

假设您有以下路线:

  1. 路线: /#/第一,查看: first.html,控制器: first-ctrl.js
  2. 路线: /#/秒,查看: second.html,控制器: 第二ctrl.js
  3. 现在假设您在第一个视图上有一个按钮,将您的应用重定向到第二个路径,在第二个路径中,您的第二个控制器启动第二个视图。在第二个控制器内,您的听众会尝试捕捉您的广播事件。 / p>

    因此,在您单击按钮后,$ locationChangeStart将被触发,您的应用程序将发送广播。但广播发生在网址更改和第二个控制器被激活之前。

    使用setTimeout可以解决这个问题,因为在延迟之后,网址已经发生了变化,第二个控制器在发送广播之前就被激活了。

    我不确切地知道您尝试使用该广播做什么,但也许您可以尝试使用$locationChangeSuccess代替?