我在$ locationChangeStart事件中从我的run函数发送$ rootScope。$ broadcast。在我的一个控制器中,我设置了一个监听器,但它没有得到事件。事件是否在页面生命周期中过早播出?解决方案是什么?
感谢。
答案 0 :(得分:1)
假设您有以下路线:
现在假设您在第一个视图上有一个按钮,将您的应用重定向到第二个路径,在第二个路径中,您的第二个控制器启动第二个视图。在第二个控制器内,您的听众会尝试捕捉您的广播事件。 / p>
因此,在您单击按钮后,$ locationChangeStart将被触发,您的应用程序将发送广播。但广播发生在网址更改和第二个控制器被激活之前。
使用setTimeout可以解决这个问题,因为在延迟之后,网址已经发生了变化,第二个控制器在发送广播之前就被激活了。
我不确切地知道您尝试使用该广播做什么,但也许您可以尝试使用$locationChangeSuccess代替?